Программирование HART модема |
Ответить |
Автор | |
Новичок Присоединился: 29 Апрель 2005 Online Status: Offline Публикации: 1 |
Опубликовано: 29 Апрель 2005 17:47 |
Доброго всем времени суток! Очень прошу откликнуться lamerokа!!! И всех соображающих в этой области тоже прошу помочь! HANDLE hCom; //**************код lamerokа******************************************************** BYTE CalculateCRC(BYTE* buff, int buff_len) void FillShortFrame(int preamble_size, BYTE dest, BYTE cmd, BYTE* data, BYTE data_len, BYTE* sbuf, int& nSend)
void __fastcall TForm1::bOpenPortClick(TObject *Sender) if (hCom==INVALID_HANDLE_VALUE) dcb.DCBlength = sizeof(DCB); ct.ReadIntervalTimeout = 0; SetCommState(hCom,&dcb)) } //***********Кнопка записи и чтения сообщения******************************* void __fastcall TForm1::bSendToPortClick(TObject *Sender) // Очищаем буферы приема/передачи Sync.hEvent=CreateEvent(NULL, TRUE, FALSE, NULL); ///////////////////////////////////////////////////////////////////////////// BYTE cmd = 0;//!!! вот здесь меняю команду и в ответ ничего не приходит !!! FillShortFrame(6, devN, cmd, NULL,0 , sbuf, max_send); ///////////////////////////////////////////////////////////////////////////// WriteFile(hCom,sbuf,max_send,&dwFactWrite,&Sync) //*****************************READING THE DATA***************************** Sync.hEvent=CreateEvent(NULL, TRUE, FALSE, NULL); if (!WaitCommEvent(hCom,&dwRMask,&Sync)) dwNumB=comStat.cbInQue;// количество байтов в приемном буфере case WAIT_TIMEOUT: default: if(ReadFile(hCom,rbuf,dwNumB,&dwRead,&Sync)) Многие проверки на ошибки я убрал, чтобы код был поменьше. |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Новичок Присоединился: 19 Июль 2005 Категория: Ukraine Online Status: Offline Публикации: 39 |
|
Для чтения заводской инфы я использу такой код: могут быть небольшие ошибки, я его почистил от лишнего, а для команд 0х01, 0х02, и т.д. нужно использовать длинный фрейм, в котором адрес уже не 1 байт, а 5 - эти байты ты собственно и получаешь командой 0х00;
struct data_00 struct data_03 struct otvet_00 struct otvet_03 BYTE aa; TForm1 *Form1; data_00 data0; DWORD nNumberOfBytesToWrite;
Comport = CreateFile(ComboBox1->Text.c_str(), if (Comport!=INVALID_HANDLE_VALUE)
comtimeouts.ReadIntervalTimeout=0;
i=1; - адрес устройства data0.preamb1=0xff;
ClearCommError(Comport,NULL,&statistic);
|
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |