当前位置:首页 > 问答 > 正文

用DOS串口怎么快又方便地把数据传进数据库,操作起来其实挺高效的

我在一个老论坛上看到过一个帖子,楼主分享了他用DOS和串口处理数据的经历,我觉得很能回答你的问题,他说他们厂里有很多老设备,比如数控机床、老款PLC什么的,这些家伙什儿只能通过一个九针的串口(也叫COM口)跟电脑通信,根本不懂什么网线、U盘,每天下班前,工人都要把设备里的生产数据,比如加工了多少零件、用了多长时间、有没有报错代码这些,通过串口线传到一台专门的老电脑上,这台电脑装的还是Windows 98系统,主要就是用DOS命令来操作。

他的方法核心就两步,第一步是收数据,第二步是存数据,听起来简单,但里面的小窍门让他觉得“快又方便”。

第一步:收数据——用DOS自带的“COPY”命令搞定

他没用任何复杂的串口调试软件,因为觉得那些还要点来点去,设置波特率、数据位、停止位太麻烦,而且容易出错,他用的是一个特别简单的方法,直接在DOS窗口里打一行命令:

COPY COM1 D:\DATA\TODAY.TXT

这行命令的意思就是,电脑你现在啥也别干,就盯着COM1这个串口,只要那边有数据传过来,你就原封不动地把它复制(COPY)到D盘的DATA文件夹下,存成一个叫TODAY.TXT的文本文件,他说这个方法的好处是“傻瓜式”,绝对不会错,只要事先用一根标准的串口线把设备和电脑连好,设备那边一开始发送,这边命令一执行,数据就哗哗地流进文件里了,速度取决于串口的波特率,对于纯文本的生产数据来说,已经足够快了,他还提到一个细节,为了防止数据混乱,他们规定一台设备传完了,下一个工人才能接着传,大家用的都是同一个TODAY.TXT文件名,但会在文件里手动加一行设备编号和日期作为分隔,这样就知道哪段数据是哪台机器的。

用DOS串口怎么快又方便地把数据传进数据库,操作起来其实挺高效的

第二步:存数据——写个简单的批处理脚本自动导入

数据收进来是文本格式,怎么进数据库呢?他们用的数据库是Access,因为比较直观,他也没有用Access直接去链接文本文件那么复杂的操作,而是用了一个“中间人”——DOS的批处理文件(.BAT)。

他事先在Access数据库里做好了一个表,表的字段就和文本文件里每一行数据的顺序对应好,比如第一列是时间,第二列是设备号,第三列是产量等等。

用DOS串口怎么快又方便地把数据传进数据库,操作起来其实挺高效的

他写了一个批处理脚本,这个脚本的核心是调用Access自带的一个命令行工具,脚本的大致思路是这样的:

  1. 先检查D:\DATA\TODAY.TXT这个文件是否存在,并且不是空文件。
  2. 如果文件OK,就执行一条命令,这条命令大概是:MSACCESS.EXE D:\数据库.mdb /X 导入宏
  3. 这个命令的意思是,用命令行的方式打开指定的Access数据库文件,然后自动执行一个名叫“导入宏”的宏。

这个“导入宏”是他提前在Access里录制好的,操作就是:打开Access,开始录制宏,然后手动操作一遍“获取外部数据”->“从文本文件导入”,选择TODAY.TXT文件,按照固定的分隔符(比如逗号或空格)分好列,最后导入到那个准备好的数据表中,停止录制,把这个宏保存为“导入宏”。

这样一来,整个流程就自动化了,工人把所有设备的数据都传进TODAY.TXT后,管理员只需要用鼠标双击一下那个批处理脚本的图标,电脑就会自动打开Access,自动执行导入操作,把文本数据全部塞进数据库表里,然后自动关闭Access,整个过程黑框框(DOS窗口)闪几下就完成了,非常快。

他总结说,这个方法之所以高效,是因为:

  • 工具现成:用的全是操作系统和Office自带的工具,COPY命令、批处理、Access宏,没花一分钱买新软件。
  • 流程固定:从设备发送,到DOS接收,再到批处理触发Access自动导入,形成了一条固定的流水线,不容易出错。
  • 操作简单:对操作人员的要求极低,工人只需要在设备上按“发送”,管理员只需要双击一个图标,不需要懂数据库知识。
  • 速度快:串口传输本身不慢,而自动化的导入过程比手动打开软件操作要快得多,省去了大量等待和点击的时间。

他也提到这方法是针对当时(大概是二十一世纪初)的特定环境,设备老、系统老、数据量也不大,但核心思想——利用系统自带工具构建自动化流水线——对于处理类似的老系统数据录入问题,确实非常实用和高效。