This is topic Специальные функции в ST-программе in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
Здравствуйте. Подкажите пожалуйста. Используя специальные функии в ST программе, запись и чтение в порт, не получается за одно выполнение программы считать более 16 байт.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Эти функции изначально планировались для использования в DOS контроллерах. Как они работают в Windows не проверялось.
Posted by shippite (Участник № / Member № 3060) on :
именно в DOS я их и использую
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Скорее всего, у Вас буфер регистра хранит только 16 байт, поэтому и считывать больше не получается. Уточните это в спецификации устройства, с которым Вы работаете.
Posted by shippite (Участник № / Member № 3060) on :
Добрый день. Я соеденил два компьютера нуль-модемным кабелем, через сом порт. На первом компьютере стоит DOS 6.2, на втором Windows XP. на втором компе поставил снифер компорта и смотрю что прилетает в порт. на первом компьютере запускаю МикроТрэйс под ДОС, и в программе пытаюсь послать 50 байт, больше чем
26-27 байт за один проход программы не посылается, при этом корректно посылаются первые 20-21 байт,
(посылаю целочисленные значения от 1 до 50).
Настройки порта MicroRTM: номер - СОМ1 Скороть - 19200 адрес - 0x3f8 контроль четности - 8-n-1 прерывание - 4 Управление - нет Таймаут - 1 RS передача - 0 Включение передатчика - 0 Задержка запроса - 0 CRS16 - пусто
пересчет MicroRTM: период -1 Разрешение - 0.01
программа срабатывает 1 раз в секунду.
первый раз я посылал 5 байт и пытался считать 50 байт больше 16 не считывалось 5 байт посылка 16 прием общий 21 байт.
С Уважением Петр.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Еще раз повторим. FIFO буфер в DOS скорее всего 16 байт, поэтому все остальные данные либо не попадают в него, либо затирают предыдущие. Проблема не в нашей функции, а в устройстве.
Posted by shippite (Участник № / Member № 3060) on :
Добрый день. Возникла вновь необходимость работы со специальными функии в ST программе, запись и чтение в порт. Интересует вопрос. Можно ли в DOS, используя специальные функии в ST программе, запись и чтение в порт, считывать с порта свыше 16 байт?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Сама по себе функция чтения из порта в ST-программе не имеет ограничений на ее повторение. Чем Вам отвечает порт, зависит от его заполнения и правильности работы с ним (проверки готовности очередного байта, в частности). Это выходит за рамки Trace Mode 6. Надо работать с портом в соответствии с его регламентом.
Posted by shippite (Участник № / Member № 3060) on :
Существует ли способ, в ST программе очистить "сбросить" очередь СOM порта?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Есть ST-функция "запись в порт" (имеется в виду "Запись в регистр"). У какой регистр порта и что нужно записать, чтобы очистить очередь COM-порта, надо брать из описания COM-порта.
Еще раз вынужден повторить: "Это выходит за рамки Trace Mode 6. Надо работать с портом в соответствии с его регламентом."
Posted by shippite (Участник № / Member № 3060) on :
Добрый день. Драйверы обмена с УСО для MS DOS, через точку входа. int RWH(unsigned short type, IA *ia, unsigned short *v); v – выходное/входное значение канала или значение атрибута канала, 16-разрядное число без знака или 16-разрядное число со знаком. а как можно передать переменную real(double)?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Нельзя в драйвер передать число больше 2 байт. Драйвер RWH предназначен для поддержки плат УСО. В реальных платах УСО значения переменной передаются и принимаются в целочисленном формате не более 16 разрядов.
Posted by shippite (Участник № / Member № 3060) on :
Добрый день. а можно примерчик по новому механизму создания драйверов, Обмен по произвольному протоколу по RS.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Реализации драйверов привязаны к конкретным протоколам. Без их публикации примеры смысла не имеют. А публиковать чужие протоколы мы не можем.
Попробуйте создать драйвер для протокола Modbus и проверить его на любом эмуляторе Modbus (их много в интернете).
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Отправлен пример.
Posted by ПавелТ (Участник № / Member № 3834) on :
А какой эмулятор Modbus конкретно посоветуете?
Posted by Romсheg (Участник № / Member № 3792) on :
Берите ModSim32 (ModScan32)
Posted by shippite (Участник № / Member № 3060) on :
Новый механизм создания драйверов, обмен по произвольному протоколу по RS, поддерживается в МикроТрэйс под ДОС?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :