спасибо
так и знал что всё нужно делать своими руками
roboforum.ruТехнический форум по робототехнике. |
|
|
SS писал(а):Если интересно, то можешь скачать с http://ss85.front.ru/DS/ComTerminal.exe
Это моя прога, я её как-то написал когда нужно было работать с COM портом, в этом же архиве исходник на Delphi 7. Описание не очень, но код не сложный разбирёшся быстро.
DCB.Fnull
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ HANDLE handle;
COMMTIMEOUTS CommTimeOuts;
DCB dcb;
handle = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
SetupComm(handle, 6, 6);
GetCommState(handle, &dcb);
dcb.DCBlength=sizeof(dcb);
dcb.BaudRate = CBR_115200;
dcb.fBinary = TRUE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity = FALSE;
dcb.fNull = FALSE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fAbortOnError = FALSE;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = 1;
SetCommState(handle, &dcb);
CommTimeOuts.ReadIntervalTimeout= 10;
CommTimeOuts.ReadTotalTimeoutMultiplier = 1;
CommTimeOuts.ReadTotalTimeoutConstant = 100;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 0;
SetCommTimeouts(handle, &CommTimeOuts);
PurgeComm(handle, PURGE_RXCLEAR);
PurgeComm(handle, PURGE_TXCLEAR);
DWORD numbytes, numbytes_ok, temp;
COMSTAT ComState;
OVERLAPPED Overlap;
char buf_in[6] = "Hello!";
char buf_in1[6];
numbytes = 6;
ClearCommError(handle, &temp, &ComState);
// если temp не равно нулю, значит порт в состоянии ошибки
if(!temp) WriteFile(handle, buf_in, numbytes, &numbytes_ok, &Overlap);
ClearCommError(handle, &temp, &ComState);
if(!temp) ReadFile(handle, buf_in1, numbytes, &numbytes_ok, &Overlap);
// в переменной numbytes_ok содержится реальное число переданных-
// принятых байт
Edit1->Text=buf_in1;
}
//---------------------------------------------------------------------------
Модератор Vooon:Код нужно заключать в теги CODE!
Дублировать сообщения не нужно!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8