• 20.07.2025, 02:42
  • Register
  • Login
  • You are not logged in.

 

m0p3d

Senior Member

rs232 Programmierung

Tuesday, June 16th 2009, 3:00pm

Ich würde gerne die rs232 unter XP ansprechen. Sprich daten Senden bzw empfangen.

Das ganze sollte so einfach wie möglich funktionieren. Am liebsten würde ich eine Consolenapp schreiben mit Dev C++

http://www.codeproject.com/KB/system/serial_com.aspx
http://www.codeproject.com/KB/system/cserialport.aspx

Das habe ich dazu gefunden anfangen kann ich damit allerdings nichts. Funktioniert in dem Dev compiler anscheind nicht ?
oder was mache ich falsch

elbarto`

God

Tuesday, June 16th 2009, 3:48pm

wenns so einfach wie möglich sein soll würde ich schonmal die finger von c++ lassen ;)
mit python und http://pyserial.wiki.sourceforge.net/pySerial sollte das wohl ziehmlich einfach gehen

m0p3d

Senior Member

Tuesday, June 16th 2009, 6:56pm

Hat einer ne Ahnung warum ich immer das Auslese was ich auch sende ?

Compuler Dev c++


#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <windows.h>

//#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
//#include <bios.h>
//#include <afxwin.h> // serial.cpp : Defines the entry point for the console application.

//#include "stdafx.h"
#include <string.h>
#include "serial.h"

// Flow control flags

#define FC_DTRDSR 0x01
#define FC_RTSCTS 0x02
#define FC_XONXOFF 0x04

// ascii definitions

#define ASCII_BEL 0x07
#define ASCII_BS 0x08
#define ASCII_LF 0x0A
#define ASCII_CR 0x0D
#define ASCII_XON 0x11
#define ASCII_XOFF 0x13
using namespace std;
// variables used with the com port
BOOL bPortReady;
DCB dcb;
COMMTIMEOUTS CommTimeouts;
BOOL bWriteRC;
BOOL bReadRC;
DWORD iBytesWritten;
DWORD iBytesRead;

HANDLE SerialInit(char *ComPortName, int BaudRate)
{
HANDLE hCom;

hCom = CreateFile(ComPortName,
GENERIC_READ | GENERIC_WRITE,
0, // exclusive access
NULL, // no security
OPEN_EXISTING,
0, // no overlapped I/O
NULL); // null template

bPortReady = SetupComm(hCom, 2, 128); // set buffer sizes


bPortReady = GetCommState(hCom, &dcb);
dcb.BaudRate = BaudRate;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
// dcb.Parity = EVENPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fAbortOnError = TRUE;

// set XON/XOFF
dcb.fOutX = FALSE; // XON/XOFF off for transmit
dcb.fInX = FALSE; // XON/XOFF off for receive
// set RTSCTS
dcb.fOutxCtsFlow = TRUE; // turn on CTS flow control
dcb.fRtsControl = RTS_CONTROL_HANDSHAKE; //
// set DSRDTR
dcb.fOutxDsrFlow = FALSE; // turn on DSR flow control
dcb.fDtrControl = DTR_CONTROL_ENABLE; //
// dcb.fDtrControl = DTR_CONTROL_DISABLE; //
// dcb.fDtrControl = DTR_CONTROL_HANDSHAKE; //

bPortReady = SetCommState(hCom, &dcb);

// Communication timeouts are optional

bPortReady = GetCommTimeouts (hCom, &CommTimeouts);

CommTimeouts.ReadIntervalTimeout = 5000;
CommTimeouts.ReadTotalTimeoutConstant = 5000;
CommTimeouts.ReadTotalTimeoutMultiplier = 1000;
CommTimeouts.WriteTotalTimeoutConstant = 5000;
CommTimeouts.WriteTotalTimeoutMultiplier = 1000;

bPortReady = SetCommTimeouts (hCom, &CommTimeouts);
cout<<"RDY";
return hCom;
}

char SerialGetc(HANDLE *hCom)
{
char rxchar;
BOOL bReadRC;
static DWORD iBytesRead;

bReadRC = ReadFile(*hCom, &rxchar, 1, &iBytesRead, NULL);
cout<<"Buchstabe wurde geholt"<<rxchar<<"\n";
return rxchar;
}

void SerialPutc(HANDLE *hCom, char txchar)
{
BOOL bWriteRC;
static DWORD iBytesWritten;

bWriteRC = WriteFile(*hCom, &txchar, 1, &iBytesWritten,NULL);
cout<<"Geschrieben"<<txchar<<"\n";
return;
}

int main()
{
HANDLE my=SerialInit("3",38400); //com1
char letter;
char letter2='F';
HANDLE *ptr;
*ptr=my;
SerialPutc(ptr,'x');
letter2=SerialGetc(ptr);
cout<<"Buchstabe wurde geholt"<<letter2;

getch();

return 0;
}

Similar threads