Я играл с API MSDOS в ассемблере в течение некоторого времени, и я пытаюсь создать приложение для чтения/записи из последовательного порта. В настоящее время я использую VMware Workstation 11 + VSPE (http://www.eterlogic.com/Products.VSPE.html) для эмуляции связи по последовательному порту.MSDOS API последовательный порт только чтение последнего отправленного символа
Я заметил, что если я отправлю, скажем, «asdfgh» в последовательный порт, а затем прочитал его в MSDOS (используя функцию прерывания 21h 03h, но я также попробовал функцию прерывания 14h 02h), она возвращает только последний символ «h»
Согласно некоторым документам, я прочитал, если приложение отправляет данные быстрее, чем я могу их обработать, символы будут потеряны, а это означает, что есть другой способ сделать MSDOS сохранять байты в буфер (управляющий поток), или я должен написать драйвер, который делает это (или, может быть, программу TSR, которая управляет этим, я не знаю).
Итак, вопрос в том, должен ли я написать драйвер или есть ли другой способ сделать это?
Там нет смысла писать драйвер. Просто войдите в устройство (8250/16550) UART) напрямую. Альтернативно замедляйте скорость передачи и опрос так быстро, как вы можете так, чтобы не потерялись байты. –
Проблема заключается в том, что передача данных инициируется пользователем, поэтому помощь в скорости обмена будет способствовать, но если один из пользователей заберет слишком много времени, чтобы ввести команду, данные будут потеряны в любом случае –
Нет, байты с меньшей вероятностью потеряются, если пользовательские типы медленнее. Тем не менее, вам нужно пройти опрос ** до того, как пользователь начнет вводить текст. После того, как уже слишком поздно, независимо от скорости передачи или скорости набора. Для чего-то простого, как копирование символов на экран, это будет работать нормально. Вы можете легко сделать это быстрее, чем кто-либо может набрать. Для более сложных вещей, таких как передача файлов, вам необходимо получить доступ к оборудованию напрямую, поскольку серийные API MS-DOS (и BIOS) не обеспечивают необходимую функциональность. –