HTBasic用于从RS232设备接收数据

时间:2019-02-27 10:31:08

标签: serial-port basic

虽然我必须在实验室中进行实验,并且必须使用HTBasic从2个GPIB设备(IEE 488)和1个RS232(这是一个高精度实验室)接收数据,但我对此并没有太了解。规模)。

我正在更改/添加其他人编写的旧脚本。只是从2个GPIB设备接收数据。

我必须仅每15-30分钟获取一次数据(该实验将运行一个月),即使我已成功从实验室规模接收数据(设备接口选择代码= 12),它们也只能“同步”到达一个循环每一个10ms(毫秒)。如果我每隔1秒钟做一次,则数据是“旧的”,例如我从秤上删除了该项目,但没有显示零“ 0”,而是显示了重量。想象一下,如果我每15分钟请求一次循环。

似乎接收到的数据按一个顺序到达并按该顺序显示。可能有一个内部缓冲区或存储它们的东西。是否有人知道如何在DEMAND上打开和关闭与串行设备的通信?例如对于GPIB设备,每次循环发生时,我都会发送一条命令,如TALK(通话)和UNT(取消通话),但是我找不到如何使用串行设备执行此操作。 我尝试了CONTROL 12,100; 0和CONTROL 12,100; 1(XOFF / XON),但没有用。

这是我尝试的脚本之一,可以为我提供正确的加权值,但是每0.01秒循环一次。

LOOP

ENTER 12 USING "10D";W
PRINT TABXY(70,20),"wEIGHT IS:";W

WAIT 0.01
END LOOP
END

3 个答案:

答案 0 :(得分:0)

我建议尝试使用握手控制。
您可以使用HTBASIC CONTROL语句控制串行接口。
例如,您可以打开:

CONTROL 9,5;0     ! use DTR and RTS
CONTROL 9,12;0    ! read DSR, CD, and CTS

您还应该这样使用Interface句柄:

ASSIGN @Serial TO 9    ! Opens the Serial Port, and clears buffer
ASSIGN @Serial TO *    ! Closes the Serial Port 

答案 1 :(得分:0)

这应该在 15分钟周期( 900秒 )中起作用:

ON CYCLE 900 GOSUB Get_Serial
LOOP
END LOOP
STOP
Get_serial:! 
  ASSIGN @Serial TO 12
  ENTER @Serial USING "10D";W
RETURN

END

答案 2 :(得分:0)

大家好,感谢您的回答(虽然来得有点晚)。

您的两个建议都可能有效(需要在不久的将来尝试它们)

那几天我为解决问题所做的工作基本上是:连续循环并在屏幕的特定区域(CRT)上打印串行设备值(以克为单位的重量),特定时间的ONDELAY(例如每15分钟)转到NEW LOOP(在代码中称为LOOOP),告诉程序从屏幕(不是直接从设备)中获取RS232 Labscale的值,当然还有2个GPIB设备,然后重复连续的LOOP以在CRT屏幕上显示真实/连续的实验室标度值,以防止缓冲区变满。 我了解这并不是一种很好的编码方式,但是正如我所说的,我是该领域的新秀...但是有效

所以我写的代码是这样的:

[....]    
33 ASSIGN @Scale TO 12

52 ENTER @Scale USING "10D";Weight

54 PRINT TABXY(70,20),"Captured LabScaLE Weight=";Weight;" g"
55 A=Weight

90 ON DELAY T GOTO Loooop

92 LOOP
93 ENTER @Scale USING "10D";A
94 A=A
95 PRINT TABXY(65,35);A;TABXY(65,35);
96 !
97 END LOOP
98 !
99  Loooop: GOTO 100  !GRAPSE THN GRAMMH PU AKOLOYTHEI PX 171
100  !
101 !
102 ENTER CRT;A

116 !==============================================START LISTENING FROM RS232 labscale (DISPAY ON CRT CONTINUUS DATA)======
117 !ENTER CRT;Weight
118 Weight=A
119 PRINT TABXY(70,20),"Captured LabScaLE Weight=";Weight;" g"
120 !
121 !==============================================START LISTENING FROM GDS CTRL=======
122 SEND 9;UNL UNT MLA TALK 14 DATA CHR$(255)
123 ENTER 9 USING "#,B,4D,6D";S,Pressurea,Volumea
124 SEND 9;UNT DATA CHR$(255)

128 !=============================================START LISTENING FROM GDS CTRL=======
129 !
130 SEND 8;UNL UNT MLA TALK 13 DATA CHR$(255)
131 ENTER 8 USING "#,B,4D,6D";S,Pressureb,Volumeb
132 SEND 8;UNT DATA CHR$(255)

[.....]


150 GOTO 92 !