// name задается в виде "COM1","COM2",
char s[255];
char *str;
AnsiString name,sp;
DWORD w;
COMMTIMEOUTS to;
COMMCONFIG cc;
if( cp ) {
CloseHandle( cp );
}
name = Port->Text;
str = name.c_str();
cp = CreateFile( str, GENERIC_READ | GENERIC_WRITE, 0,
0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if( cp != INVALID_HANDLE_VALUE ) {
w = sizeof(cc);
GetCommConfig(cp, &cc, &w );
sp = Speed->Text;
cc.dcb.BaudRate = sp.ToInt();
if(Paryty->ItemIndex) cc.dcb.fParity = TRUE;
else cc.dcb.fParity = FALSE;
cc.dcb.Parity = Paryty->ItemIndex;
cc.dcb.StopBits = StopBit->ItemIndex;
cc.dcb.ByteSize = DataBit->ItemIndex+4;
SetCommConfig(cp, &cc, sizeof(cc) );
GetCommTimeouts( cp, &to );
to.ReadIntervalTimeout = 10;
to.ReadTotalTimeoutMultiplier = 10;
to.ReadTotalTimeoutConstant = 50;
to.WriteTotalTimeoutMultiplier = 5;
to.WriteTotalTimeoutConstant = 5;
SetCommTimeouts( cp, &to );
w = EV_RXCHAR | EV_TXEMPTY;
SetCommMask( cp, w );
Далее для посылки в порт и чтения из порта можно пользоваться следующим
ReadFile и WriteFile куда подставляешь десриптор порта.