| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Работа с COM портами |
| Автор: СЭНСЭЙ 4.6.2009, 18:16 |
| Привет всем. Начал работать с ком портом. Есть устройство, которое подключается к ком порту и посылает на него данные. Формат данных известен, он строковый. Как задать порт я понял, функции чтения и записи тоже понятны. Но нужно наверное повесить чтение данных на отдельный процесс. Помогите пожалуйста кто в этом уже разбирается. Когда опрашиваю скорость ком порта, то выдается 1200 хотя в свойствах в диспетчере устройств установленно 9600 из за чего это? |
| Автор: Romikgy 5.6.2009, 14:06 |
на заборе много чего написано , сколько раз заглядывал никогда ничего нет:( конкретно что надо опиши плз |
| Автор: СЭНСЭЙ 5.6.2009, 16:26 | ||
| Буду последовательно описывать проблемы первая с чтением данных Вот код:
Выдает ошибку 997 я смотрел - Код ошибки: 997 (0x03E5) Протекает наложенное событие ввода/вывода. |
| Автор: СЭНСЭЙ 5.6.2009, 17:02 | ||||
| Оу разобрался нужно использовать такой цикл
только я отправляю в один порт данные в формате Pchar, а по нульмодемному кабелю другой порт читаю но данные принимаются в виде иероглифов <Фw-П типа такого вот код отправки
|
| Автор: СЭНСЭЙ 5.6.2009, 17:28 | ||
| Попробовал отправлять и принимать данные в виде массивов типа byte отправляю WriteBytes: array of Byte; WriteBytes2: array[0..2] of Byte; setlength(writebytes,3); writebytes[0]:=1; writebytes[1]:=3; writebytes[2]:=2; а когда принимаю команда edit1.text:=inttostr(writebytes2[0]); выдает 133 а если вместо этого выполнить edit1.text:=inttostr(writebytes2[0])+' '+inttostr(writebytes2[1])+' '+inttostr(writebytes2[2]); выдает ошибку в этом месте
непонятно почему так как этот код в цикле а принятые данные вывожу уже за циклом |
| Автор: Romikgy 5.6.2009, 19:43 |
| непонятно где произошла ошибка , и не понятно какой код используешь , ибо куски что выложены с трудом связываются , можешь полный текст дать передатчика и приемника ком порта |
| Автор: СЭНСЭЙ 6.6.2009, 12:32 | ||
| ок вот весь код но это еще больше измененный со вчера
ну вот portin и oirtout это выподающие меню где два варианта COM1 и COM2 у меня COM1 и COM2 соединены нуль модемным кабелем если в этой строке edit1.text:=inttostr(writebytes2[0]);//+' '+inttostr(writebytes2[1])+' '+inttostr(writebytes2[2]); раскоментить остальную часть то возникает странная ошибка и у меня сложилось впечатление что команда ReadFile в цикле ничего не читает на самом деле так как что бы я ни послал в один порт на выходе в массиве writebytes2 одно и то же |