'CR1000X,可适应CR6, RS232通信
“探头别名/作业
公共探头(2)
别名SONDE(1) =水温'摄氏度(*C)
别名SONDE (2) = Specific_Conductivity '微西门子(uS/cm)
的常量
Const Serial_Port = ComC5
Const high = true
Const low = false
“公共变量
Public Battery_Volt 'Campbell系统电源来自主+12伏电池。
Dim PanelTemp '数据记录器内部温度。
单位Battery_Volt = Volts_DC '系统电池电压以伏特为单位测量,直流。
PanelTemp = *C '数据记录器的内部温度,以摄氏度测量。
的触发
Public Trigger (1) As Boolean '允许手动触发SDI-12传感器。
Alias Trigger (1) = Trigger_Stage
的波特率
Public EXO_Baud_Rate_38400 As Boolean '如果波特率为38400,而默认为9600。
公共EXO_Baud_Rate
“挂式RS232计数器
Dim Sonde_Data As String * 256 '原始EXO数据字符串逗号删除。
Dim RS232_Count '计数内部RS232跳过计数。
公共RS232_Counter '计数如果RS-232被跳过并重新运行。
的数据表
数据表(Station_Data,真的,1)
DataInterval(0900秒,10)
样本(1、探头(1)FP2)“WT
样本(1、探头(2),UINT2)“SC
EndTable
“挂式子例程
子的
SerialOpen (Serial_Port EXO_Baud_Rate 0, 0, 2000, 0)”相称,波特率
SerialOut (Serial_Port,"0" + CHR(13),"?Command",3,10)'ComPort,输出字符串(字符13 = ^M)
延迟(1500毫秒)
SerialOut (Serial_Port,"data" + CHR(13) + CHR(10),"",1,0)'字符10 = ^J,换行(LF)。
延迟(1500毫秒)
&H0D0A SerialIn (Sonde_Data Serial_Port, 100年,200年)'目的地(原始EXO数据字符串)
消除探头()
Sonde_Data =修剪(Sonde_Data)'复制没有前导或尾随字符的字符串。
”、“SplitStr(探头,Sonde_Data, 2 0)'用逗号、参数#、数值分割数据。
SerialFlush (Serial_Port)'清除缓冲区中的数据
SerialClose (Serial_Port)“关闭rs - 232相称
EndSub
的主要项目
BeginProg
SW12 (SW12_1, 1)' RV-50调制解调器电源正常打开。打开或关闭开关+12伏
SW12 (SW12_2, 1)'信号输出适配器(SOA)电源,正常打开。打开或关闭开关+12伏
'通过RS232获取EXO
SlowSequence
扫描(60秒,1,0)
'获取探头数据,通过RS-232
如果EXO_Baud_Rate_38400 = True则信号输出适配器上的RS-232波特率可能为38400。
EXO_Baud_Rate = 38400
EndIf
如果EXO_Baud_Rate_38400 = False则'RS-232默认波特率为9600。
EXO_Baud_Rate = 9600
EndIf
If If time (0,900,Sec) Then Trigger (1) = high
如果Trigger(1)则
调用EXO '调用EXO RS-232子程序。
Trigger (1) = low
开始循环,检查探头错误/ WT = NAN
如果SONDE(1) <> NAN Then RS232_Count = 0 'RS232 Count保持0表示数据是好的。
如果SONDE(1) <> NAN Then ExitDo 'Exit DO Loop is data is good。
If SONDE(1) = NAN Then '如果EXO WT读到NAN, RS2323 Counter < 5
RS232_Count = RS232_Count + 1 '增量脉冲计数器1
RS232_Counter = RS232_Count '使内部RS-232 Count = RS232计数器
延迟(0 5秒)'延迟在循环的EXO RS232扫描允许EXO
如果RS232_Count < 5,则调用EXO '循环调用EXO RS-232子ountine,如果NAN在WT中。
如果RS232_Count = 0,则ExitDo
如果RS232_Count = 5那么ExitDo
循环
EndIf
EndIf
If RS232_Count >= 5 Then SDI12Recorder (SONDE(),C3,1,"M!",1,0,-1)'如果RS-232失败,则通过SDI-12调用EXO
If SONDE(1) = 0 Then SDI12Recorder (SONDE(),C3,1,"M!",1,0,-1)'如果RS-232失败,则通过SDI-12调用EXO
RS232_Count = 0
RS232_Counter = 0
的系统数据
电池(Battery_Volt)
PanelTemp (PanelTemp _60Hz)
CallTable Station_Data
NextScan
杰,
感谢您与CS社区分享您的代码!
最好的,丹娜
这篇文章正在审查中。