你好所有的,
这是我的第一篇文章,因为我试图学习更多的CRBasic编程。谢谢你找。我有一个光学科学ORG-815光学降水传感器和分裂它的序列串的问题。传感器响应“A”命令与3个变量的数组和工作很好。我为它对“A”命令的响应编写了以下代码。
“ORG815变量
Public ORG(3) As String * 16
Alias ORG(1) = WeatherStatusCode
Alias ORG(2) = InstantaneousRainRate
Alias ORG(3) = total cumulative
公共numBytesRet
int String = String * 16
的主要项目
SerialOpen (Com2、1200、0100、24)
SerialOut (Com2、“”、“”,1200年)
SerialInRecord (Com2 inString 0 16 0, numBytesRet, 01)
SplitStr (ORG inString”、“3、7)
ORG还响应一个“D”命令,该命令返回一个包含7个变量的数组。我想我可以增加字符串大小,缓冲区和分割的数量。然而,当我这样做时,公共表中没有显示任何东西。下面是“D”命令的代码。
“ORG815变量
Public ORG(7) As String * 40
Alias ORG(1) = WeatherStatusCode
Alias ORG(2) = InstantaneousRainRate
Alias ORG(3) = total cumulative
Alias ORG(4) = LensHeaterStatus
别名ORG(5) = Diag1
Alias ORG(6) = Diag2
Alias ORG(7) = Diag3
公共numBytesRet
int String = String * 40
的主要项目
SerialOpen (Com2、1200、0100、90)
SerialOut (Com2、“D”,“”,1200年)
SerialInRecord (Com2 inString 0 40 0, numBytesRet, 01)
SplitStr (ORG inString”、“7、7)
为什么我不能把字符串分成7个变量而3个可以?任何帮助都将非常感谢。谢谢你!
你确定inString(40个字符)包含所有由“空格”分隔的字段吗?
numBytesRet包含什么?
为什么要把目标字符串的大小设置为40个字符EACH,而以前16个字符就足够了?
或者反过来问…如果每个字符都需要40个字符,那么输入的字符串将远远大于40个字符。这里有些事说不通。
输入的字符串应该是40个字符长D命令,根据手册。当发出A命令时,它有16个字符长。我尝试增加字符串大小的inString和缓冲区,但它仍然不工作。
当发出A命令时工作的程序numBytesRet为16。但是当我为D命令运行程序时,numBytesRet是0。
我可以在终端仿真器中观察传感器的响应,所以我知道它的工作和返回数据时,命令是问题。我似乎不能把串行字符串正确地分割成7个变量。谢谢你的帮助。