我使用的代码仍然适用于购买公司的新版设备。
我无法在visual studio中使用vb中的设备进行通信(我编写的最后一个代码的语言)。但是我可以在LabVIEW中创建一个简单的代码来查看设备是否正在通信,而且它是。
所以,我的问题是labview发送到设备的代码是什么?
我在LabVIEW GUI中看到的唯一内容是*IDN?\n
这跟我写的一样吗?
mySerialport.WriteLine("*idn?" + Chr(10))
答案 0 :(得分:2)
*IDN?\n
与:
不同mySerialport.WriteLine("*idn?" + Chr(10))
前者是大写的,而后者则不是,并且可能会导致问题,具体取决于工具。
您正在使用串口,因此最重要的考虑因素是波特率。您公司购买的后期型号设备可能与之前使用的设备具有不同的波特率。
如果您想查看LabVIEW正在发送的数据,您可以使用NI IO Trace或非NI串行端口监视器,例如列出的here
答案 1 :(得分:0)
问题不在于LabVIEW使用的语言。 LabVIEW是一个编程环境,具有库API,可以与大量硬件通信,并且任何人都可以编写代码来与更多硬件通信。问题是“硬件讲的是什么语言?”要回答这个问题,你会发布它是什么类型的硬件,可能会去制造商的网站上查看规格表。
“* IDN?/ n”看起来像GPIB命令,它只是一个框架串行协议。您需要硬件规格表才能知道硬件理解的特定命令。
PS:LabVIEW没有显示硬件通信的GUI。你有一个用LabVIEW编写的应用程序,它有一个显示信息的GUI。如果需要,您可以编辑程序以打印更多信息,就像在VB中一样。在这种情况下抱怨“LabVIEW GUI”等同于在你用VS编写的程序出现问题时抱怨Visual Studio GUI!
答案 2 :(得分:0)
“我从labview GUI中看到的唯一内容是* IDN?/ n”
这听起来更像是在MAX(测量和自动化eXplorer)中使用VISA测试面板。它与LabVIEW有关,因为它也是NI(NI)开发的工具。但听起来你并没有真正触及LabVIEW本身。
如前所述,* IDN?\ n是遵循SCPI消息传递标准的仪器的典型命令。在Windows系统上,这通常与“* idn?”相同。 + Chr(13)+ Chr(10)。
答案 3 :(得分:0)
正如SeanJ所指出的那样* IDN?\ n与" idn?"不同。此外,请确保调用方法中的空格字符可见。有时机器要求您手动输入" \ r \ n"完整回车。