今天在用LabVIEW对一台函数信号发生器进行控制的时候,遇到了一个问题。按照函数信号发生器的说明书的说明,首先要手动使设备进入到程控状态,再发送地址信息,之后发送相应的指令对设备进行操作,每条指令用chr(10)结尾。
最初我没有先手动使设备进入到程控状态,就发送地址信息,之后发送指令,这时设备有响应,但是错误响应,同时是随机的,即同一条指令可能得到不同的响应,就是不能正确响应。
注意到要先手动使设备进入到程控状态后,再发送地址信息和指令,设备反倒不再响应,后在发送地址信息后加上10ms的延时,再发送指令,并将地址数据后面的chr(10)去掉(这一点在说明书没有指出),响应正常。
分析原因,可能是地址数据并没有用chr(10)结尾,顾其将后续的数据一并认为是地址信息,从而对再后续的指令则认为不是发给自己的而不接收,从而不响应指令。但是,对于地址信息,其数据包有特定的标志位,至于为什么会把两种数据混淆,以及为什么在没有先手动使设备进入到程控状态时设备会随机响应,原因不明。
最初我没有先手动使设备进入到程控状态,就发送地址信息,之后发送指令,这时设备有响应,但是错误响应,同时是随机的,即同一条指令可能得到不同的响应,就是不能正确响应。
注意到要先手动使设备进入到程控状态后,再发送地址信息和指令,设备反倒不再响应,后在发送地址信息后加上10ms的延时,再发送指令,并将地址数据后面的chr(10)去掉(这一点在说明书没有指出),响应正常。
分析原因,可能是地址数据并没有用chr(10)结尾,顾其将后续的数据一并认为是地址信息,从而对再后续的指令则认为不是发给自己的而不接收,从而不响应指令。但是,对于地址信息,其数据包有特定的标志位,至于为什么会把两种数据混淆,以及为什么在没有先手动使设备进入到程控状态时设备会随机响应,原因不明。