为DOSBOX增加外部串口功能

news2024/9/24 5:21:23

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

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

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

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

 

2. 将COM1绑定给DOSBOX

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

3. 在宿主机上操作COM2

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

 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可以绑定到实体串口上进行交互通讯。总之,被DOSBOX绑定的串口是DOSBOX独占的,宿主机不能直接操作(但可以通过串口对交互)。Modbus是协议层的,可在RS232和RS485跑协议,因此,DOSBOX可以通过串口调试Modbus设备,或编程使用Modbus设备。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/930943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【NLP的python库(01/4) 】: NLTK

一、说明 NLTK是一个复杂的库。自 2009 年以来不断发展,它支持所有经典的 NLP 任务,从标记化、词干提取、词性标记,包括语义索引和依赖关系解析。它还具有一组丰富的附加功能,例如内置语料库,NLP任务的不同模型以及与S…

【LeetCode75】第三十七题 二叉树中的最长交错路径

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 给我们一棵二叉树,问我们在这棵树里能找到的最长交错路径。最长交错路径就是在二叉树里一左一右一左一右这样走,最…

Golang Gorm 高级查询之where + find

插入测试数据 package mainimport ("fmt""gorm.io/driver/mysql""gorm.io/gorm" )type Student struct {ID int64Name string gorm:"size:6"Age intEmail *string }func (*Student) TableName() string {return "student&q…

自动化测试概况和认知

前言 书中说测试架构师掌握自动化测试的目的不是设计自动化架构或是具体来部署自动化,而是用好自动化。其实这一点我觉得对涉及自动化测试的人员都是通用的,只是偏重点不同。 往往自动化测试前期投入成本可能会大一点,比如框架设计、技术选…

神经网络的工作原理

目录 神经网络的介绍 神经网络的组成 神经网络的工作原理 Numpy 实现神经元 Numpy 实现前向传播 Numpy 实现一个可学习的神经网络 神经网络的介绍 神经网络受人类大脑启发的算法。简单来说,当你睁开眼睛时,你看到的物体叫做数据,再由你…

【论文笔记】Planning and Decision-Making for Autonomous Vehicles

文章目录 Summary1. INTRODUCTION2. MOTION PLANNING AND CONTROL2.1. Vehicle Dynamics and Control2.2. Parallel Autonomy2.3. Motion Planning for Autonomous Vehicles 3. INTEGRATED PERCEPTION AND PLANNING3.1. From Classical Perception to Current Challenges in Ne…

一篇读懂辐射检测仪应用解决方案技术(附方案选型及原理分析)

关于常见的辐射检测仪应用方案: 辐射检测仪是用于测量环境中辐射水平的设备,常用于核电站、医疗机构、实验室和核辐射工作场所等地方。以下是一种可能的辐射检测仪应用方案: 实时监测:辐射检测仪可以实时监测环境中的辐射水平&am…

NIST测试包的可能问题

其实,大多数出现的问题,可能或多或少都可能跟数据集的大小相关。 如: Random Excursions Variant,在测试结果中,可能显示为横线,打开原始报告,可以看到: WARNING: TEST NOT APPLICABLE. THERE ARE AN INSUFFICIENT NUMBER INSUFFICIENT NUMBER OF C…

【C++ 学习 ⑰】- 继承(下)

目录 一、派生类的默认成员函数 二、继承与友元 三、继承与静态成员 四、复杂的菱形继承及菱形虚拟继承 五、继承和组合 一、派生类的默认成员函数 派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员。如果基类没有默认构造函数,那么必须在派生…

spring框架:简介+依赖注入

目录 一、spring简介 二、创建项目 三、spring创建对象 四、SpringBean管理 1.注入实现-XML 2.注入实现-注解 一、spring简介 spring诞生与2003年,是一个轻量级的、IOC( Inversion Of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程)的jav…

linux挂载内网镜像源文件,支持yum安装

cd /etc/yum.repos.d/vim kylin_aarch64.repo 重建yum缓存 yum clean allyum makecacheyum repolist

【vue】实现高性能虚拟滚动的Vue代码解析

在前端开发中,当需要展示大量数据时,如何保持页面的流畅性是一个挑战。传统的滚动方式会将所有数据一次性渲染到页面,这可能导致页面加载缓慢甚至崩溃。而虚拟滚动技术能够解决这个问题,它只渲染可视区域内的数据,从而…

Vue2向Vue3过度Vuex核心概念actions

目录 1 核心概念 - actions1.定义actions2.组件中通过dispatch调用 2 辅助函数 -mapActions 1 核心概念 - actions state是存放数据的,mutations是同步更新数据 (便于监测数据的变化, 更新视图等, 方便于调试工具查看变化), actions则负责进行异步操作 说…

用Python写一个武侠游戏

前言 在本教程中,我们将使用Python写一个武侠类的游戏,大的框架全部搭好了,很多元素都可以自己添加,让游戏更丰富 📝个人主页→数据挖掘博主ZTLJQ的主页 个人推荐python学习系列: ☄️爬虫JS逆向系列专栏 -…

PHP自己的框架cookie()使用(完善篇七)

1、PHP自己的框架cookie() 2、cookie类&#xff08;CookieBase.php&#xff09; <?php class CookieBase {/*** 设置cookie*/public static function set($name, $value, $expire 3600, $path , $domain , $secure false, $httponly false) {setcookie($name, $valu…

Verilog 实现超声波测距

Verilog 实现超声波测距 教学视频&#xff1a; https://www.bilibili.com/video/BV1Ve411x75W?p33&spm_id_frompageDriver&vd_source19ae31dff4056e52d2729a4ca212602b 超声波测距原理 参考资料&#xff1a;STM32的超声波测距程序_超声波测距stm32程序_VaderZhang的…

cs231n assignment3 q5 Self-Supervised Learning for Image Classification

文章目录 嫌墨迹直接看代码Q5 Self-Supervised Learning for Image Classificationcompute_train_transform CIFAR10Pair.__getitem__()题面解析代码输出 simclr_loss_naive题面解析代码输出 sim_positive_pairs题面解析代码输出 compute_sim_matrix题面解析代码输出 simclr_lo…

37、springboot 为 spring mvc 提供的自动配置及对自动配置的一些自定义定制(大体思路)

springboot 为 spring mvc 提供的自动配置及对自动配置的一些自定义定制&#xff08;大体思路&#xff09; ★ Spring Boot主流支持两个MVC框架&#xff1a; Spring MVC&#xff08;基于Servlet&#xff09; Spring WebFlux&#xff08;基于Reactive&#xff0c;属于响应式AP…

开源双语对话语言模型 ChatGLM-6B 本地私有化部署

本文首发于&#xff1a;https://www.licorne.ink/2023/08/llm-chatglm-6b-local-deploy/ ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级…

人员跌倒检测识别预警

人员跌倒检测识别预警系统通过pythonopencv深度学习网络模型架构&#xff0c;人员跌倒检测识别预警系统实时监测老人的活动状态&#xff0c;通过图像识别和行为分析算法&#xff0c;对老人的姿态、步态等进行检测和识别&#xff0c;一旦系统检测到跌倒事件&#xff0c;立即发出…