T
TAnis
доброго времени суток!
прошу помоч со следующим вопросом
Имееться датчик измерительный давления подключенный в преобразователю из RC232 в Rc485 ну соответсвенно от него в Сом
как получить данные из регистра 0020h и 0021h? по докам запрос начтение выглядит
запрос :
1байт-Адрес устройства
2байт -код команды 0х03
3,4 байты старший и младший байты относительного адреса регистра с которого начинаеться чтение
5,6 байты старший и младший байты количества считываемых 16 битных регистров (W)(не более 6)
7,8 CRC
ответ:
1байт-Адрес устройства
2байт -код команды 0х03
3байт количество байтов ответа (2xW)
4..N байты считываемых регистров (N=2xW+3)
N+1 N+2 CRC
:wall: обьясните чего не так и чего к чему плиз
мой код->
прошу помоч со следующим вопросом
Имееться датчик измерительный давления подключенный в преобразователю из RC232 в Rc485 ну соответсвенно от него в Сом
как получить данные из регистра 0020h и 0021h? по докам запрос начтение выглядит
запрос :
1байт-Адрес устройства
2байт -код команды 0х03
3,4 байты старший и младший байты относительного адреса регистра с которого начинаеться чтение
5,6 байты старший и младший байты количества считываемых 16 битных регистров (W)(не более 6)
7,8 CRC
ответ:
1байт-Адрес устройства
2байт -код команды 0х03
3байт количество байтов ответа (2xW)
4..N байты считываемых регистров (N=2xW+3)
N+1 N+2 CRC
:wall: обьясните чего не так и чего к чему плиз
мой код->
Код:
HANDLE hComm;
DWORD bc;
DCB dcb;
int i;
memset (&dcb, 0, sizeof (DCB));
// dcb=(DCB*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(DCB));
dcb.DCBlength = sizeof (DCB);
dcb.BaudRate = CBR_9600; //CBR_110, CBR_300, CBR_600, CBR_1200, CBR_2400, CBR_4800, CBR_9600, CBR_14400, CBR_19200, CBR_38400, CBR_56000, CBR_57600, CBR_115200, CBR_128000, CBR_256000
dcb.fParity = TRUE;
dcb.ByteSize = 8;
dcb.Parity = ODDPARITY;
dcb.StopBits = ONESTOPBIT;
hComm = CreateFile( "COM3", //"172.17.0.250"
GENERIC_WRITE|GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hComm == INVALID_HANDLE_VALUE) {
printf(" Can't open Com3 ");
}
else {
printf(" Com3 is open! ");
dcb.fDtrControl = DTR_CONTROL_ENABLE;
dcb.fRtsControl = RTS_CONTROL_ENABLE;
if(!SetCommState(hComm, &dcb))
printf("SetCommState failed");
char b[8];
char s[8]={ '0x01',
'0x03',
'0x00',
'0x20',
'0x00',
'0x04','0xc3',0x45 };
DWORD iSize;
WriteFile(hComm,s,strlen(s)+1,&iSize,0);
char s1[8];
ReadFile(hComm,b,9,&iSize,0);
for (i=1;i<=8;i++)
{
itoa(b[i],s1,10);
Edit1->Text=Edit1->Text+s1;
}
// }
Memo1->Lines->Add(Edit1->Text);
WaitForSingleObject(hComm, INFINITE);
}
CloseHandle(hComm);