LabVIEW 编程实例:手把手教你串口仪器控制
首先,用串口助手测试下。先看自己需要的功能,一般仪器的功能都特别多。而自己一般需要测试输入通道或者输出即可。所以,先找到自己需要的功能。
上位机仪器的通信方式主要分为下面几种;
①,只发送指令,不接受指令。
②,不用发送命令,就只用读取响应。
③,发送一次指令,只读取一次响应。
④,发送一次命令,就一直连续读取响应
很多人,如果自己写单片机的话,大多都一直发送命令出来,就是第②种。正常的仪器,是第①③④种居多。
所以,首先分清你的仪器的指令,有没有返回字符串等。
如上图所示,如果是这个仪器,你就按后面的功能发送。注意那些 dd 和 nn 是格式说明符。上图的仪器,dd 指仪器的 ID 号,如果你仪器是 01,你要输入 ASCII 格式,就是输入 *01A。注意不要混淆了格式符。
下面看看 Keithley2000 的指令怎么用。
如果是国外的仪器,说明手册里面,都会有个 Remote Operation.见上图,是 Keithley2000万用表的说明书。自己看相关章节指令。
如果我们要读取 Keithley2000 测量读数,就可以用下面的 SCPI 指令。
在串口调试助手里或者 LabVIEW 发送一个 :READ?然后就会返回仪器读数。其他指令参照说明书即可。不过国外的一些仪器,有些指令可能有先后顺序,需要按一定顺序发送。具体看说明书。
如下是,另一个仪器的说明片段,差不多告诉了用户格式。
注意看我红框部分。每个仪器差不多都会有的。都有发送命令,和相应命令。然后发送的命令和相应的命令都是有格式的。按照说明书的格式来。这个,是发送一次指令,就返回一次响应的。后面会详细解释。
这台仪器,还提供了例子,自己可以用这个例子测试一下仪器通不通。后面的接受数据部分,请看字符串那一节。
下面,我们把上图的例子部分,用 LabVIEW 写一下。注意:命令串:$012B7(cr)中$012 是 ASCII 显示下的,而 B7 是十六进制显示下的。cr是回车符,即 16 进制的 OD。
由于显示不一样,所以我用连接字符串来组合。
这样,最简单的收发式的仪器通信就完成了。
问:我看自带的范例,在 VISA 写之后,都有个延时,这个延时,起个什么作用?
这个延时,主要是因为编程人员用的是这种组合。前面已经讲过了,它读取串口缓冲区所有数据,当你发送一个数据,要等待仪器回送完响应数据,再读取才是完整的数据,所以,要等待仪器响应。这个时间,看自己摸索,最好刚好合适,毕竟一直等待也不是最好的方法。
如果是本例,由于回送的字符串是固定的,如下图,有 11 个,那你就可以不要用延时。直接用固定字符串,这样,程序自己会自动等待 11 个字符串接受完再执行下一个。
正常情况下,如果接受的字符串是固定的,推荐使用固定字符串个数,就是如下图的方式来编程,等待延时这种方式不推荐。
注意:以上程序是发送一次指令,仪器回送一次响应的。有些仪器的指令,可能不需要返回指令。
下面举例一下:
比如某个仪器的开关接口,开关的命令如下,没有返回值;
输出允许:OUT1
禁止:OUT0
那么最简单的程序如下,控制开
有些仪器,检测到串口连接或者打开电源就会往串口发送数据,利用如下组合就可以了。因为上位机只需要读串口,不需要写串口。
单片机串口问题
前一阵子在Pic官网购买了一块8位单片机开发板。
然后遇到了一些问题,所以和大家探讨一下,对这个有了解的还希望在下方评论、谢谢!
Pic18F47Q10
我买的是Pic18F47Q10 NANO 开发板,如下图
板子的质量一等做工,产自马来西亚。
是我买到的为数不多的优质的开发板。
它可以通过数据线直接给单片机烧录程序,因为板子上集成了烧录器的功能,通过下方这个芯片来完成烧录。
除了可以给单片机烧录程序、还可以做调试、串口使用。
引脚图
问题
在使用中遇到了串口不能收发数据的问题。
最开始我没有多想,就用平时的思维改了程序的时钟、波特率这些。
后来发现不行,于是查看数据手册,发现这个单片机有两组串口,而我没有定义使用的是哪一组串口。
于是我又查看板子的原理图,看看哪一组串口连接到了USB端。原理图如下:
结果接到USB端的既不是单片机上的串口1、也不是串口2,而是一组普通的I/O口!
RD0和RD1!
那么问题来了!
为什么单片机上有两组现成的串口不用,而特意去虚拟一组串口呢?
欢迎知道的小伙伴在下方评论!
相关问答
51 单片机串口调试 助手怎么写?可以参照以下步骤:1.确定串口通信协议:串口通信协议一般包括波特率、数据位、停止位、校验位等。在编写串口调试助手时,需要根据需要确定使用的串口通信协议...
上位机用 串口调试 助手发送十进制数, 单片机 收到后在数码管显...返回给上位机是没有变化的,只是显示数制不一样了。单片机在收到数据后直接把数据按十进制分成几位再动态显示在数码管上。这个如果要帮忙的话,看左...
多个 单片机串口 通信如何进行?两个单片机之间串口通信,如果是用proteus仿真,最简单了,两个单片机的RXD,TXD交叉连接就行了。要是实物最好用RS232连接通信,距离可以达到几十米。再远点距离...
单片机 控制无线 串口 模块该怎样去编程?串口WiFi模块是由具备WiFi外设的ARM组成的系统,它们上电后会启动自己的系统然后等待与你的单片机进行串口通信,主动权还是掌握在你的单片机上,远程控制甚至是...
串口 通信的问题,两个 单片机 之间进行 串口 通信,它们的时钟频率不同,在进行数据传输是怎么实现的?串行通讯要求的是波特率一致,两个单片机的时钟不一样,那么特特率发生器的参数就不一样,以保证波特率一样。串行通讯要求的是波特率一致,两个单片机的时钟不一...
怎么实现两个 单片机 之间的 串口 通信?两个单片机之间串口通信,如果是用proteus仿真,最简单了,两个单片机的RXD,TXD交叉连接就行了。要是实物最好用RS232连接通信,距离可以达到几十米。再远点距离...
串口调试 助手里,不显示字符。这是为什么啊? - 懂得是不是收到的都是FF,其实是你的串口收的速度太慢,你可以把单片机发数的速度搞慢点,也就是说,每发一个字符,延一段时,你先可以延时约1秒,试试,如果行...
32 单片机串口 烧录如何配置?要配置32单片机的串口烧录,首先需要确定使用的烧录工具和烧录软件。然后,连接烧录工具到单片机的串口引脚上,确保连接正确。接下来,在烧录软件中选择正确的...
用STC 单片机 模拟 串口 ,接收的时候,只有第一个字节是正确的,后边的都错误,而且接收的数据比正确的数据短?掌握...不要用函数调用来延时!!对于时间精度要求高的场合,函数调用是很不合适,因为函数的参数传递,当前状态的进栈出栈都要消耗时间,而这些时间你未必能完全...
单片机串口 通讯为什么不用奇偶校验?一般情况下不用校验也不会出错,如果干扰严重,即使加奇偶校验也不能保证传输百分之百正确,为了程序简单,所以通常不校验一般情况下不用校验也不会出错,如果干...