《Direct I/O in DOSBOX for COMM serial communications with QBasic, TBasic or Pbasic》笔记中记录了在DOSBOX砂箱下,对串口编程的DOS程序和WINx16程序,以及让WINx16位程序在WINx64下直接运行的方法。接下来是分离DOS程序与主机通讯程序,让它们互相配合,各尽其职,将边缘计算与现代化展现与网络结合起来,从而形成可发挥作用的系统。

对于局部控制,ISA是优秀的工业标准总线,它不需要所谓高速SerDes串并转换,硬件控制非常透明,是老一代工业系统开发者的优选。基于ISA总线的SBC卡、CPU卡、ADC、DAC、DIO、COUNTERS、FREQUENCY、PWM、NETWORK、PC-CARDS等等,几乎是应有尽有,非常完善。如果把它们聚集到母板上,将DOS和其下的串口直接端口操作程序放上去,再通过串行总线与WIN64、LINUX64按指令交互,就是基本的简单系统。为了让它更清晰,不妨把它放在一个壳子里,让黑壳子开机就自己运行,无需显示等任何其它辅助设备。

全套局部系统的组成应包括:

1. 传感器和执行机构

2. 配线架和端子接入箱

3. 信号处理箱

4. 用户终端、桌面。

局部系统之间可以通过工业总线联网,RS485、HART、CAN、PROFIBUS、ETHERNET等等。这类总线几十种,我们国家也制订有相应的总线,就连现在的汽车中也使用标准总线,就不细述了,它本身就是一套值得研究和发展的领域,国内目前做得还不够好,努力空间很广阔。

有了SCADA分布式系统,只是过程处理的自动化和简单的智能化,还达不到智慧工厂要求。所以,要通过物联网将不同城市间的SCADA系统连起来,再与管理运营与生结合起来。

工业控制开发人员在工厂智慧化上的作用是非常大的,主要是在系统系统层级发力,而其它两个维度要既懂技术又清楚管理的总监,才能共同完成智慧工厂建设和之后的持续改进。《Direct I/O in DOSBOX for COMM serial communications with QBasic, TBasic or Pbasic》主要是硬件通讯内核的筑助,用户层的通讯内核也有,

典型方式:WINDOWS API, MSCOMM, SERIALPORT

遇到问题最多的是断线或受干扰中断通讯死锁问题

当发送完指令后,往往要等待寄存器数据准备好后才能读取,否则数据无效。一些控件在发送和接收时做了处理,对字节进行组装,如果在组装过程中线路中断,用户很难处理这类错误,程序就不动了。

解决方法1. 最好就是用BYTE发送、BYTE接收,自己组装指令和数据。

解决方法2. 程序死锁往往是单线程序,可在主进程中设置FLAG1,在线路数据处理部分清除FLAG1。主线程发现FLAG1很长时间或很多次不清时,则关闭通讯口,然后再打开通讯口,强制处理通讯口异常。

解决方法3. 发送数据前也设置FLAG2,接收成功后清除FLAG2,FLAG2不清除就能再发送数据。主发送和接收在FLAG2握手下进行,避免Overwrite发生。

控件的使用

MSCOMM是WINx32自带的ActiveX COM组件,VB、XE、C++Builder等,都可以Import了使用它,采取上述措施后还是宜用的。

SerialPort是VS自带的,在NET平台上直接可用,注意事项是一样的。

值得一提的是Lazarus带的SerialPort组件,还是要用它,不要费劲的调用其它COM组件,因为Lazarus是跨平台编译的,用了平台相关组件就失去了程序跨平台编译能力,是很可惜的事情。唯一遇到的问题是进程死锁产生超时错误,中断了程序运行。

找到PAS文件的237行,将ProcessMessage这个循环提前两行开始,问题就解了。

原来它是发出结束进程就在那ProcessMessage死等结束标记,不如再发结束指令再读结束标记。就像我们手工关闭窗体,一次关不了就多点几个次关闭,不要点一次就等到晚。

9600下发指令、收指令加校验,几十次至上百次指令与数据交互,稳定、迅速,中间断线断电后自动恢复交互。串口,用好了出奇迹,用不好出麻烦,是个既让人爱又让人恨的悠久存在。

串口关闭问题

Q. DELPHI2关闭主窗口或退出程序时出现异常错误

A. 因为MSCOMM.VBX的引入,退出主程序前必须先关闭它,而且要在窗体关闭前先关闭串口。做法是将它放在FormCloseQuery里面,而不是其它地方!

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
     Comm1.PortOpen := False;
end;

Q. VB3编程放在哪里比较合适

A. 放在FORM_Unload里面。VB3简化了窗体关闭过程,如此放置不会出异常的。VB4和VB6与VB3放的位置相同。

Sub Form_Unload (Cancel As Integer)
    ' Close the serial port.
    Comm1.PortOpen = False
End Sub

Q. VB.NET编程放在哪里比较合适

A. VB.NET不像以前那么粗放,放在Dispose里同窗体一同消毁。

Private Sub Form1_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed
        SerialPort1.Close()
    End Sub

Q. NET平台的C#上编程放在哪里合适

A. 放到Form的Designer.cs的Dispose里

Private Sub Form1_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed
        SerialPort1.Close()
    End Sub

Q. XE C++ Builder 和 Delphi 编程放在哪里

A. 放在FormCloseQuery里

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
        if (MSComm1->PortOpen == true) {
                MSComm1->PortOpen = False;}
        Timer1->Enabled = false;
}

Q. Lazarus / FreePascal 编程放在哪里

A. 同 Embarcadero XE,放在FormCloseQuery里

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
     CanClose := True;
     if LazSerial1.Active then
          LazSerial1.Active := False;          //Close serial port
end;

不论是Import的MSCOMM组件,还是自带的串口控件,均要在程序结束之前关闭串口,时序错了主程序关不掉、出现异常错误。另外特别注意,发送/接收时用For/Next,而不用Do/Loop,否则断线了进入死循环,失去自我恢复机能。不论MSCOMM还是SerialPort组件,用对了都好用。

串口硬件设备与WINx64下不同环境的程序控制相关推荐

  1. SylixOS与硬件设备连接问题——硬件设备串口、网口连接问题

    2019独角兽企业重金招聘Python工程师标准>>> SylixOS与硬件设备连接出现的问题介绍 一般情况下,用户可以通过串口.网口与硬件设备进行交互通信,当其中某一种连接方式出现 ...

  2. 企业直播要如何做?硬件设备、网络环境有哪些要求?

    企业直播要如何做?硬件设备.网络环境有哪些要求? 文章目录 第1部分.直播硬件设备 ├─A.电脑硬件推荐配置 └─B.选配硬件 第2部分.直播网络环境 第3部分.直播设备连接 ├─A.双机位摄像机视频 ...

  3. CentOS下查看电脑硬件设备属性命令

    如何在linux下查看电脑硬件设备属性 # uname -a               # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue   # 查看操作系统版本 # ...

  4. linux查看电脑硬件信息,怎么在linux下查看电脑硬件设备属性和各种信息

    如何在linux下查看电脑硬件设备属性 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuin ...

  5. HPUNIX环境常用查看硬件设备信息命令小结

    前段时间呢,因为工作上的关系,项目里面需要用到一些关于服务器各个环境下的查询命令,然后去网上找了下资料,整理了一下自己用到的命令放在这儿,如果有需要的朋友可以来这里看看,觉得不妥的地方可以相互沟通,如 ...

  6. 企业直播该如何做?硬件设备、网络环境、设备连接和观看权限等整个直播流程教程

    这是一份面向直播新手的企业直播说明教程,字数较多,完整看完,可能会需要求10分钟,建议您可以[收藏],如果本文章对您有帮助,就帮助[点个赞]吧~~~ 阿酷TONY  / 2023-5-12  / 原创 ...

  7. 搞定企业视频直播:硬件设备、直播网络环境和设备连接说明

    阿酷TONY  / 2022-11-22  / 原创  /  长沙  / 目录 1.直播硬件设备 2.直播网络环境 3.直播设备连接 ├─A.双机位摄像机视频直播场景 └─B.单机位摄像机视频直播场景 ...

  8. linux系统下,浏览器怎么调用本地硬件设备如指纹仪等。

    linux系统下,浏览器怎么调用本地硬件设备如指纹仪等. 这个问题是一个同学在项目开发中遇到的问题,做的也是政府部门相关的项目,由于现在政府部门都在慢慢开始放弃windows系统改用Linux系统了, ...

  9. win10用什么软件测试硬件,Win10系统下硬件设备检测工具的使用方法

    在win10系统中,自带有硬件设备检测工具,当电脑遇到故障的时候就可以用这个工具来检测并处理,可是许多win10系统用户并不知道要怎么使用硬件设备检测工具,接下来小编就给大家分享一下Win10系统下硬 ...

最新文章

  1. 如何统计博客园的个人博客访问量
  2. 第5章 Python 数字图像处理(DIP) - 图像复原与重建17 - 由投影重建图像、雷登变换、投影、反投影、反投影重建
  3. bzoj 1604: [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居(切比雪夫距离+multiset贪心+并查集)
  4. 一、annotation
  5. RPM软件包管理(安装、卸载、查询、制作)
  6. python-opencv 图像二值化,自适应阈值处理
  7. 安信可nbiot模块_安信可wifi模组特征
  8. 王给月度BOSS队伍带来什么变化?
  9. python爬取墨迹天气的8月份的温度情况并发送到邮箱
  10. 微软紧急发布Windows XP/7 WannaCry漏洞补丁
  11. Win7(Win10)+Ubuntu18.04(16.04)双系统安装心得
  12. 今天发现了一个好网站,推荐给大家!
  13. 太平洋大西洋水流问题
  14. vsan虚拟化和共享存储服务器,恰逢其时:当VSAN遇到浪潮云海桌面一体机
  15. Java——快手2020校园招聘秋招笔试--[编程题]运动会
  16. 刚开始学egret开发,第一课 《小鸡过马路》- 绘制npc,绘制玩家控制角色,碰撞检测还不完善,嘿嘿!
  17. javaFX安装及使用
  18. SDL2.0--绘制文字
  19. 断网安装是什么意思_关于ADSL宽带断网掉线的几个处理办法
  20. 【源码分析设计模式 5】Java I/O系统中的装饰器模式

热门文章

  1. 2011年-过年看的书
  2. 【微机原理与接口技术】--第六章--基本输入输出接口技术
  3. springcloud alibaba(一)nacos下载及简单使用
  4. 在Office自动化条件下读文档属性
  5. C 是编译类高级程序语言 对 错,C言语编译过程中的常见过错
  6. 具有TreeView下拉控件的ComboBox
  7. python 股票量化盘后分析系统V0.46
  8. 水族箱泵市场深度研究分析报告
  9. (一)TestNG测试框架(含Demo源码)
  10. saltstack的sls文件树与sls文件编写