COM1 и COM4 ADAM-5510E/TCP |
Ответить |
Автор | |
Участник Присоединился: 09 Июнь 2005 Категория: Russian Federation Online Status: Offline Публикации: 78 |
Опубликовано: 15 Август 2005 15:07 |
Добрый день! Подскажите кому не лень почему не работает COM-4 на контроллере ADAM-5510E/TCP.
У контроллера 4 порта. Com1 - 232/485 (выбирается перемычкой), Com2 - 485, Com3 (для программирования) и Com4 - 232/485 (выбирается перемычкой) . Для работы с каждым портом предусмотрены свои функции в библиотеке которая идет с контроллером. Нужно опрашивать устройства с RS-232. Одно устройство я подсоединил к COM-1, другое к COM-4. Устройство описано классом, сокращенный исходный код которого приведен ниже. Так вот, устройство которое подключено к COM-1 работает, контроллер его опрашивает, связь идет все ок. И то же самое вроде сделано для связи по COM-4 но обмена нет. Все проверил нету. Перемычки все в RS-232. Класс используется примерно так: Ustroistvo * dev1; dev1=new ustroistvo(1); // сделали экземляр для COM-1 Ustroistvo * dev2 dev2=new ustroistvo(4); // сделали экземляр для COM-4 // Используемые переменные unsigned char obuf[7] - буффер на передачу unsigned char ibuf[20] - буффер на прием int port - номер порта Вот отрывок кода класса: 1-конструктор 2-опрос устройтсва 1. ------------------------------------------------- // Инициализация (вход - int port) if (port==1) // Если порт COM1 { int status; status=com_install(1); if (status==0) cout << "COM 1 Installed \n"; com_set_format(8,0,1); com_set_speed((unsigned long)9600); com_set_parity(0,1); } else if (port==4) // Если порт COM4 { int status; status=com_232_485_install(); if (status==0) cout << "COM 4 Installed \n"; com_232_485_set_format(8,0,1); com_232_485_set_speed((unsigned long)9600); com_232_485_set_parity(0,1); } else cout << "INVALID COM Port!!!"; ------------------------------------------------- 2. ------------------------------------------------- // Работа с портами obuf[0]=255; obuf[1]=33; obuf[2]=0x20; obuf[3]=0x2E; obuf[4]=4; for (int i=1;i<5;i++) crc=crc^obuf[I]; obuf[5]=crc; obuf[6]=3; if (port==1) // если порт устройства COM-1 com_tx_string(obuf); else if (port==4) // если порт устройства COM-4 com_232_485_tx_string(obuf); ADAMdelay(10); int k=0; if (port==1) while (com_rx_empty()==0) { ibuf[k]=com_rx(); k++; } else if (port==4) while (com_232_485_rx_empty()==0) { ibuf[k]=com_232_485_rx(); k++; } ibuf[k+1]='\0'; printf("%d ",ibuf[0]); printf("%d ",ibuf[1]); printf("%d ",ibuf[2]); printf("%d ",ibuf[3]); printf("%d ",ibuf[4]); printf("%d ",ibuf[5]); printf("%d ",ibuf[6]); printf("%d \n",ibuf[7]); ------------------------------------------------- Если через COM-4 то ibuf[0]...[7] нули. А если через COM-1 то все ок. Подскажите кто с этим сталкивался. Также для связи с устройством используются Rx,Tx,Gnd,DTR. Без DTR не работает. Может быть в COM1 есть управление DTR а в COM-4 нет? Заранее огромное спасибо. |
|
Участник Присоединился: 09 Июнь 2005 Категория: Russian Federation Online Status: Offline Публикации: 78 |
|
Смотрел на форуме, нашел 3 таких ситуации, но ответов нигде нет. Подскажите кто с этим сталкивался. Очень нужно.
|
|
Участник Присоединился: 09 Июнь 2005 Категория: Russian Federation Online Status: Offline Публикации: 78 |
|
Подскажите хотябы распиновку COM-4 для RS-232 и RS-485...
|
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |