为DOSBOX增加外部串口功能

如果DOSBOX内部串口与宿主机串口通互通,那DOSBOX中各种语言开发的程序均与外界有了串行通信功能,MODBUS with DOSBOX也就实现了。下面的操作,为DOSBOX打开通往外部的串行通信接口。

1. 在宿主机上创建虚拟串口对。方法是安装 Free 的 com0com 串口对程序,并创建成对的串口,比如图中的 COM1和COM2,接线方式是右侧一个红点可以接通数个绿色点,但一般情况下默认即可,无需自己改动连接线,所须做的工作是在 use Ports class 框打钩,并在上面的文本框中为串口起名字,显然要避开已有串口,否则冲突了会创建失败。

如果有实体串口空闲,可以忽略这一步。这一步的目的是让宿主机有串口可供DOSBOX绑定使用,宿主机串口被DOSBOX绑定后,因被占用就不能在宿主机上操作了。对于串口对,绑定一个可以操作另一个; 对于实体串口,绑定后宿主机的串口只能外连串口设备使用了。两者用法不太相同。

为DOSBOX增加外部串口功能_第1张图片

 在宿主机的设备管理器上看一下,会在端口下找到创建的串口对。

为DOSBOX增加外部串口功能_第2张图片

2. 将COM1绑定给DOSBOX

为DOSBOX增加外部串口功能_第3张图片

在DOSBOX的配置菜单中,进入Serial Ports,然后在 serial1处填写 directserial realport:com1,如果还要绑定其它口,则在下面的串口处继续绑定。意思是:DOSBOX的serial1,与宿主机的COM1是直接绑定的。因为COM1和COM2是串口对,所以,在宿主机上操作COM2即相当于操作COM1,而宿主机的COM1就是DOSBOX的serial1,如此内外就连接起来了。

3. 在宿主机上操作COM2

可以下载使用宏晶科技单片机串口烧写和调试用的ISP软件,其它串口助手也都可以使用,它们大多是免费的。可以选用文本方式、自动发送、发送时自动发送结束符,这样在DOSBOX中的程序接收时,方便接收ASCII字符串。

为DOSBOX增加外部串口功能_第4张图片

 4. 在DOSBOX中测试对宿主机发送数据的接收。在DOS中进入QBasic开发环境,用QB帮助里面的示例稍加改造

COLOR 15, 1
CLS
'Set up error handling in case COM1 doesn't exist.
ON ERROR GOTO ErrHandler                          
'Open the COM port.                       
OPEN "COM1:9600,N,8,1,BIN" FOR INPUT AS #1

'Turn on COM event processing.            
COM(1) ON                                 
'Set up COM event handling.               
ON COM(1) GOSUB Com1Handler               
'Wait for a COM event to occur or a key to be pressed. 
DO                                                     
LOOP WHILE INKEY$ = ""                                 
'Turn off COM event handling.                          
COM(1) OFF                                             
CLS                                                    
END                                                    

Com1Handler:                                                                  
    COM(1) OFF                                                                
    LINE INPUT #1, A$                                                         
    PRINT A$; TIME$;                                                          
    '"Something was typed on the terminal attached to COM1."                  
    COM(1) ON                                                                 
    RETURN                                                                    
                                                                              
ErrHandler:                                                                   
    SELECT CASE ERR                                                           
        CASE 68: PRINT "COM1 is unavailable on this computer.": END           
        CASE ELSE: END                                                        
    END SELECT

启动宿主机ISP程序自动发送数据,运行DOSBOX中上面的QBASIC程序。

为DOSBOX增加外部串口功能_第5张图片

 如果串行通讯程序在宿主机上,用串口对比较方便; 如果程序在其它计算机上,DOSBOX可以绑定到实体串口上进行交互通讯。总之,被DOSBOX绑定的串口是DOSBOX独占的,宿主机不能直接操作(但可以通过串口对交互)。Modbus是协议层的,可在RS232和RS485跑协议,因此,DOSBOX可以通过串口调试Modbus设备,或编程使用Modbus设备。另外,DOS时代一些游戏软件是用串口组网对战的,DOSBOX绑定串口后那些游戏又能组网玩味了。

你可能感兴趣的:(单片机,嵌入式硬件,DOSBOX串口外连,DOS与外部串口通讯)