DAlexV, спасибо! Сейчас попробую!Добавлено (16.05.2014, 13:35)
---------------------------------------------
Действительно работает! Спасибо!
Добавлено (09.06.2014, 18:21)
---------------------------------------------
В продолжение темы. Перешел на VB2010. Пытаюсь связать 18f2550 с VB2010 по 232(про юсби знаю, но задача другая). Все вяжется, передается и принимается, только есть одно НО. Я решил не заморачиваться и использовал готовый протокол связи MoDBus RTU. Так вот, при запросе с компа на чтение параметров, в контроллер прилетает все четко, например запрос: 01 03 00 00 00 08 44 0С, контроллер распознает запрос, проверяет CRC и формирует ответ. Ответ приходит правильный за исключением последнего байта CRC. Последние 2 байта в 12 байтной посылке иногда приходят правильные, но это примерно через 5 раз. Когда приходит не правильные данные возвращается код 3f, что соответсвует вопросительному знаку ascii. Также я понял что это связанно со свойством ParityReplace = 63 это свойство прописано по умолчанию. Дело в том, что до не давнего времени все работало, а потом в одночасье перестало и не могу найти причину, уже другой проект создал, но диагноз тот же. С помощью COmPump проверяю, все четко приходит, 100% данных приходят, делал куча запросов. А вот VB2010 сопротивляется и все. Есть подозрение, что идет рассинхронизация, что ли, (я знаю что интерфейс асинхронный).
SerialPort1.PortName = "COM3"
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.StopBits = IO.Ports.StopBits.One
SerialPort1.Parity = IO.Ports.Parity.None
SerialPort1.WriteTimeout = 500
SerialPort1.ReadTimeout = 500
SerialPort1.Handshake = IO.Ports.Handshake.None
Добавлено (09.06.2014, 19:25)
---------------------------------------------
Так, частично разобрался. Подключил компамп через 232 к своей проге на vb2010, все работает. Начал мучать контроллер. Короче написал жесткий ответ без всяких расчетов, и все работает без ошибок. Остается вопрос что происходит с контроллером. Как-то я уже поднимал вопрос на эту тему. Короче в 2 словах:
ЕUsart настроен на прерывание,
В прерывании заполняется буфер притятых данных с порта. Здесь вопросов нет, все работает отлино.
Когда основной код не большой, скажем просто вывести на LCD 2 строки(смотрю что прилетело в порт), то тут происходит самое интересное. То данные не все прилетают, то часть теряется, то не могу отправить в порт обратно (Hserout или TXREG = ни то ни то не работает), пока не поставлю задержку в 15-100 мс сек в основном коде. Но это мне не подходит. Declare FSR_CONTEXT_SAVE = On объявил, Context Save и Context restory тоже есть, но не работает. Хоть вешайся. Год назад долбался и не допер и сейчас таже история. Может у кого было подобное, что с этим делать?
Добавлено (10.06.2014, 13:38)
---------------------------------------------
Вот еще инфа. Контроллер бедный уже по всякому перешил. И решил соединить компамп с прогой. Дальше кидаю в порт и смотрю что пришло. Оказалось, что до значения 128($80) все работает как часы, а вот выше 128 и выше приходят вопросы, что делать???? Тут явно visual basic троит, дальше то русские символы должны быть, если учесть ascii. Товарищи знатоки, подскажите в чем соль?!