Если надо кидать нули, значит буфферизация в чипе - не работает ...
Если надо кидать нули, значит буфферизация в чипе - не работает ...
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
В общем, надо разбираться с Windows API - как ДОЖДАТЬСЯ опустошения буфера. По хорошему - и Windows и COM порта, так как я не уверен, что Windows не сбрасывает COM порт, если программа, которая его использовала - вызвала функция закрытия хендла com порта или не завершилась.
И понятно, почему и у Патрона и у меня всё работает - и там и там приложение класса Сервер - то есть они не завершают свою работу после передачи чего-либо
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
Я и написал - разбираться - как ждать завершения передачи
Теоретически как-то дождаться ответа "с той" стороны загрузчика что загрузилось всё. И потом уже можно видимо закрывать порт, выходить из приложения и т.д.
Понятно что если это загрузчик самого лоадера - то никаких таких ответов от него недождаться и тут все верно, нужно будет как-то понять в какой момент винда передала все данные. А если уже лоадер загрузился - то он вполне может чем-то там отвечать.
Последний раз редактировалось BlaireCas; 26.06.2023 в 14:59.
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
В общем, я пока счастливо эту проблему избежал, так что пока - не знаю какНо вопрос хороший, может, как нть покапаюсь, так как есть у меня некоторые задумки насчёт настандатного использования com порта
![]()
Так у него спросить наверно можно (если помнит)
https://zx-pk.ru/members/5864-olegh.html
А зачем спрашивать? Есть DESS, взял и посмотрел.
- - - Добавлено - - -
Посмотрел. Проблема в том, что там расположен упаковщик с адреса 0550. А у меня при старте SP=01000, да и вызов п/п идёт, портится код в Гоблинах. Поправим.
- - - Добавлено - - -
Исправленная версия, нормально загружается упакованный код.
Обновлённая версия UkncComSender.
В данной версии поддерживается файл настроек UkncComSender.ini, расположенный в том же каталоге, где и исполнимый модуль.
Командная строка для запуска: UkncComSender COM_порт Имя_файла [Скорость]. В качестве первого параметра используется имя COM-порта, с которым программа будет работать, например COM1. Второй параметр - имя загружаемого файла. Если размер файла меньше или равен 512 байт, т.е. состоит из одного блока, то такой файл загружается без изменений. В другом случае из нулевого блока файла загружается только информация в смещении 0500-0776, т.к. для загрузки файла сперва загружается загрузчик, затем этот загрузчик загружает файл, начиная с первого блока. Третий параметр задаёт скорость обмена в бодах, может отсутствовать, по умолчанию 9600.
По умолчанию в программе используется такой блок DCB для настройки COM-порта:
dcb.BaudRate = dwBaudRate;
dcb.ByteSize = 8;
dcb.fBinary = 1;
dcb.fParity = FALSE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDtrControl = DTR_CONTROL_ENABLE;
dcb.fDsrSensitivity = FALSE;
dcb.fTXContinueOnXoff = FALSE;
dcb.fOutX = dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
dcb.fRtsControl = RTS_CONTROL_ENABLE;
dcb.fAbortOnError = FALSE;
dcb.Parity = NOPARITY;
dcb.StopBits = TWOSTOPBITS;
Настройки программы можно изменить через файл UkncComSender.ini. В текущей версии поддерживаются следующие параметры:
Секция [Main].
В этой секции параметр Sleep, задающий паузу в миллисекундах перед сбросом содержимого COM-порта и его закрытием в программе. Будет полезен в случае использования USB-переходников. Пример:
Sleep = 3000
Задаются пауза в 3000 мс (3 сек).
Секция [DCB].
В этой секции задаются параметры блока DCB, которые вы хотите изменить. В текущей версии поддерживаются следующие параметры:
BaudRate - задаёт скорость передачи в бодах. Он является более приоритетным перед параметром, который задаётся в командной строке.
fDtrControl - задаёт управление линией DTR. Может принимать значения DTR_CONTROL_ENABLE, DTR_CONTROL_DISABLE, DTR_CONTROL_HANDSHAKE.
fRtsControl - задаёт управление линией RTS. Может принимать значения RTS_CONTROL_ENABLE, RTS_CONTROL_DISABLE, RTS_CONTROL_HANDSHAKE.
fOutxDsrFlow - разрешает или запрещает слежение за линией DSR. Может принимать значения TRUE или FALSE.
fOutxCtsFlow - разрешает или запрещает слежение за линией CTS. Может принимать значения TRUE или FALSE.
StopBits - задаёт количество стоп-битов. Может принимать значения ONESTOPBIT или TWOSTOPBITS.
При изменении какого либо параметра в секции DCB, он выводится на экран. Если вывод отсутствует, то значит вы ошиблись в наборе нужного параметра. Текущие значения Sleep и BaudRate выводятся всегда.
Пример файла UkncComSender.ini:
[Main]
Sleep = 2000
[DCB]
BaudRate = 9600
fDtrControl = DTR_CONTROL_ENABLE
fRtsControl = RTS_CONTROL_HANDSHAKE
fOutxDsrFlow = FALSE
fOutxCtsFlow = TRUE
StopBits = TWOSTOPBITS
nzeemin(03.07.2023)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)