Здравствуйте, teran2000, Вы писали:
T>есть некое устройство., с ним общаться можно только через послед. порт.
T>устройство понимает только такое(сигнал от компа к девайсу): 8бит, NOPARITY,TWOSTOPBIT T>а отвечает таким(от девайса к компу):8бит, NOPARITY,ONESTOPBIT
Интересное устройство. А если распаять кабель на два порта компа и с одного читать, а в другой писать?
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
Здравствуйте, teran2000, Вы писали:.
T>это устройство японское...точнее это микроконтроллер nec. T>чем японцы руководствовались изобретая такое...объяснить не могу
T>т.е. вы хотите сказать что технически работа одного порта для такой задачи невозможна?
Самым правильным будет изготовить какое-то согласующее устройство. Или попробовать программно эмулировать стоповый бит при записи в порт, посылая в него по байту.
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
есть некое устройство., с ним общаться можно только через послед. порт.
устройство понимает только такое(сигнал от компа к девайсу): 8бит, NOPARITY,TWOSTOPBIT
а отвечает таким(от девайса к компу):8бит, NOPARITY,ONESTOPBIT
причем линии RX TX общие!
т.е. когда шлю в девайс данные одновременно эти же данные идут обратно,
ну и через некоторое время девайс отвечает.
Сначала я не заметил и просто выставил 8бит, NOPARITY,TWOSTOPBIT, и все заработало...
Но когда комманд стало больше...мое приложение стало виснуть в неопределенных местах.
Пока нашел эту нестыковочку со стоповыми битами..всю прогу перепроверил.
теперь не знаю как такую работу организовать, не получается переключать ONESTOPBIT/TWOSTOPBIT
по понятным причинам 1,5 стопбита на 8бит данных не ставится.
Здравствуйте, teran2000, Вы писали:
T>устройство понимает только такое(сигнал от компа к девайсу): 8бит, NOPARITY,TWOSTOPBIT T>а отвечает таким(от девайса к компу):8бит, NOPARITY,ONESTOPBIT
ИМХО наиболее правильным было бы сделать "аппаратный прокси" на основе одного МК с двумя USART (например ATmega64, ок. $5) или двух МК с одним USART (например ATtiny2313, $1.5).
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
W>Самым правильным будет изготовить какое-то согласующее устройство. Или попробовать программно эмулировать стоповый бит при записи в порт, посылая в него по байту.
мое приложение поддерживает все мк без согласующих устойств, не очень хочется
городить доп. железо. тем более что такая морока возникла только с одной серией мк.
интересный вариант с эмуляцией.
это как?
по идеи можно заставить DTR или RTS работать как TX но как это сделать в винде..не представляю..
Здравствуйте, teran2000, Вы писали:
T>интересный вариант с эмуляцией. T>это как?
Я имел в виду заставить порт посылать в линию данные по байту так, чтобы промежуток между посылкой байтов заведомо превышал 2 (стоповых) бита. Тогда будет неважно, что порт настроен на 1 стоповый бит. Сам не пробовал.
T>по идеи можно заставить DTR или RTS работать как TX но как это сделать в винде..не представляю..
Я сомневаюсь что это заработает (Windows не позволяет точно задавать промежутки времени) но вообще-то есть функция EscapeCommFunction, позволяющая управлять линиями DTR и RTS. Для этого управление этими линиями должно быть разрешено в поле Flags структуры DCB (DTR_CONTROL_ENABLE, RTS_CONTROL_ENABLE). Про EscapeCommFunction должно быть здесь или на MSDN здесь
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
W>Я имел в виду заставить порт посылать в линию данные по байту так, чтобы промежуток между посылкой байтов заведомо превышал 2 (стоповых) бита. Тогда будет неважно, что порт настроен на 1 стоповый бит. Сам не пробовал.
хм...идея! у меня все отправляется с минимальным промежутком между байтами
попробую поставить задержку между байтами
Здравствуйте, teran2000, Вы писали:
W>>Я имел в виду заставить порт посылать в линию данные по байту так, чтобы промежуток между посылкой байтов заведомо превышал 2 (стоповых) бита. Тогда будет неважно, что порт настроен на 1 стоповый бит. Сам не пробовал.
T>хм...идея! у меня все отправляется с минимальным промежутком между байтами T>попробую поставить задержку между байтами
T>спасибо!