VB读取485温度计问题求教
-
PrivateSubCommand1_Click()'发送指令Dimpu()AsByteDimstrdataAsStringDimcrc_js()AsByteReDimpu(5)pu(0)="&H00"pu(1)="&H03"pu(2)="&H00"'2、3为温度计地址pu(3)="&H00"'2、3为温度计... Private Sub Command1_Click() '发送指令 Dim pu() As Byte Dim strdata As String Dim crc_js() As Byte ReDim pu(5) pu(0) = "&H00" pu(1) = "&H03" pu(2) = "&H00" '2、3为温度计地址 pu(3) = "&H00" '2、3为温度计地址 pu(4) = "&H00" '4、5为读取寄存器长度 pu(5) = "&H01" '4、5为读取寄存器长度 crc_js = CRC16(pu()) MSComm1.Output = pu MSComm1.Output = crc_js MSComm1.OutBufferCount = 0 '清除发送缓冲区 End Sub Private Sub Form_Load() MSComm1.CommPort = 7 '串口为7 MSComm1.Settings = "9600,n,8,1" MSComm1.RThreshold = 1 '发送频率为1每发送一个字符都会使 MSComm 控件触发OnComm 事件 MSComm1.SThreshold = 1 MSComm1.InBufferCount = 0 '清除接收缓冲区 MSComm1.OutBufferCount = 0 '清除发送缓冲区 MSComm1.InputMode = comInputModeBinary '二进制接收 If Not MSComm1.PortOpen Then MSComm1.PortOpen = True '打开串口 End If End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False End Sub Private Sub MSComm1_OnComm() 'COM事件 Print "返回值:" & MSComm1.CommEvent Select Case MSComm1.CommEvent Case comEventBreak MsgBox "comEventBreak" Case comEventCDTO MsgBox "comEventCDTO" Case comEventCTSTO MsgBox "comEventCTSTO" Case comEventDSRTO MsgBox "comEventDSRTO" Case comEventFrame MsgBox "comEventFrame" Case comEventOverrun MsgBox "comEventOverrun" Case comEventRxOver MsgBox "comEventRxOver" Case comEventRxParity MsgBox "comEventRxParity" Case comEventTxFull MsgBox "comEventTxFull" Case comEventDCB MsgBox "comEventDCB" Case comEvCD MsgBox "comEvCD" Case comEvCTS MsgBox "comEvCTS" Case comEvDSR MsgBox "comEvDSR" Case comEvRing MsgBox "comEvRing" Case comEvEOF MsgBox "comEvEOF" Case comEvReceive MsgBox "接收到数据返回" End Select End Sub 结果是 MSComm1.CommEvent = 1 'ComEvSend 1 发送缓冲区中的字符数少于 SThreshold。 我想获取温度计温度,该如何写啊,求高手指点,附通讯协议。 展开
全部评论(1条)
-
- fdutwefw 2017-06-03 00:00:00
- 输出时不要清缓冲区Private Sub Command1_Click() '发送指令 Dim pu() As Byte Dim strdata As String ReDim pu(5) pu(0) = "&H00" pu(1) = "&H03" pu(2) = "&H00" '2、3为温度计地址 pu(3) = "&H00" '2、3为温度计地址 pu(4) = "&H00" '4、5为读取寄存器长度 pu(5) = "&H01" '4、5为读取寄存器长度 MSComm1.Output = pu MSComm1.Output = CRC16(pu) 'MSComm1.OutBufferCount = 0 '清除发送缓冲区 End Sub事件处理程序不要用 Msgbox,也没必要每种事件都处理。Private Sub MSComm1_OnComm() 'COM事件 Dim RcvBuff() As Byte Debug.Print "返回值:" & MSComm1.CommEvent Select Case MSComm1.CommEvent Case comEvReceive DoEvents RcvBuff = MSComm1.Input ' '处理 RcvBuff 中的返回报文 ' Case Else 'Donothing... End Select End Sub如何处理收到的报文我就不写了,你自己研究。
-
赞(3)
回复(0)
热门问答
- VB读取485温度计问题求教
- PrivateSubCommand1_Click()'发送指令Dimpu()AsByteDimstrdataAsStringDimcrc_js()AsByteReDimpu(5)pu(0)="&H00"pu(1)="&H03"pu(2)="&H00"'2、3为温度计地址pu(3)="&H00"'2、3为温度计... Private Sub Command1_Click() '发送指令 Dim pu() As Byte Dim strdata As String Dim crc_js() As Byte ReDim pu(5) pu(0) = "&H00" pu(1) = "&H03" pu(2) = "&H00" '2、3为温度计地址 pu(3) = "&H00" '2、3为温度计地址 pu(4) = "&H00" '4、5为读取寄存器长度 pu(5) = "&H01" '4、5为读取寄存器长度 crc_js = CRC16(pu()) MSComm1.Output = pu MSComm1.Output = crc_js MSComm1.OutBufferCount = 0 '清除发送缓冲区 End Sub Private Sub Form_Load() MSComm1.CommPort = 7 '串口为7 MSComm1.Settings = "9600,n,8,1" MSComm1.RThreshold = 1 '发送频率为1每发送一个字符都会使 MSComm 控件触发OnComm 事件 MSComm1.SThreshold = 1 MSComm1.InBufferCount = 0 '清除接收缓冲区 MSComm1.OutBufferCount = 0 '清除发送缓冲区 MSComm1.InputMode = comInputModeBinary '二进制接收 If Not MSComm1.PortOpen Then MSComm1.PortOpen = True '打开串口 End If End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False End Sub Private Sub MSComm1_OnComm() 'COM事件 Print "返回值:" & MSComm1.CommEvent Select Case MSComm1.CommEvent Case comEventBreak MsgBox "comEventBreak" Case comEventCDTO MsgBox "comEventCDTO" Case comEventCTSTO MsgBox "comEventCTSTO" Case comEventDSRTO MsgBox "comEventDSRTO" Case comEventFrame MsgBox "comEventFrame" Case comEventOverrun MsgBox "comEventOverrun" Case comEventRxOver MsgBox "comEventRxOver" Case comEventRxParity MsgBox "comEventRxParity" Case comEventTxFull MsgBox "comEventTxFull" Case comEventDCB MsgBox "comEventDCB" Case comEvCD MsgBox "comEvCD" Case comEvCTS MsgBox "comEvCTS" Case comEvDSR MsgBox "comEvDSR" Case comEvRing MsgBox "comEvRing" Case comEvEOF MsgBox "comEvEOF" Case comEvReceive MsgBox "接收到数据返回" End Select End Sub 结果是 MSComm1.CommEvent = 1 'ComEvSend 1 发送缓冲区中的字符数少于 SThreshold。 我想获取温度计温度,该如何写啊,求高手指点,附通讯协议。 展开
- VB 关于MODBUS RTU 通讯数据读取问题
- 看网上其它人写的源程序,读取输入时 Dim a(8) As Byte a = MSComm1.Input 但是我在运行时,总是提示"不能给数组赋值",看帮助说明也是不能给数组赋值,那其他人的程序上是怎么实现的?(已将串口模式更改为二进制模式). 谢谢!
- 怎样读取温湿度传感器的485数据
- LabVIEW中VISO读取老是失败,想读取电子负载输入功率,求教。
- 求教:压力控制问题。
- 我想设计一套气压控制的检测系统,情形大致如下:1、向密闭的空间(大约20立方厘米)注入压缩空气,保压,测得气压值P1。2、持续保压10秒之后,测得气压值P2。3、将前后测得的气压值对... 我想设计一套气压控制的检测系统,情形大致如下:1、向密闭的空间(大约20立方厘米)注入压缩空气,保压,测得气压值P1。 2、持续保压10秒之后,测得气压值P2。 3、将前后测得的气压值对比,如果漏气,则所测产品不合格,不漏气为合格。 请问:除去机械部分,我该选用哪些电器控制元件,请推荐一下具体产品的品牌以及型号。 展开
- 求教一个拉曼光谱问题?
- 请问一下,我做的铁掺杂的二氧化锡(Fe-doped SnO2),拉曼光谱做出来存在Fe2O3和SnO2的峰,这里Fe2O3的峰时证明样品中存在氧化铁,还是说明铁是以三价形式进入SnO2晶格的啊!XRD中无Fe2O3峰!
- scanf读取文件的问题
- 如何用scanf读取以下格式的数据有空格和其他字符,如何得到这四组数 1892-22-54 55:22:99,11.347213,0.585384 scanf(“”,)
- plc通过485通讯读取苍南流量计evc300的方法,急急,谢谢
- 求教灯丝电流不够问题
- 求教,蜘蛛的运输问题
- 变压器温度计的问题?
- 图片中温度计中的1、2、3、4的指针标注的意思对吗?我总觉得不对!另外红色指针是干什么用的?谢谢1,2,3,4那有四个小指针... 图片中温度计中的1、2、3、4的指针标注的意思对吗?我总觉得不对!另外红色指针是干什么用的?谢谢 1,2,3,4那有四个小指针 展开
- 求教断路器操作箱的问题
- Z近在效验500KV的线路保护装置,那些保护AB屏的信号出口好像都是送到断路器操作箱里面去,求高人指点断路器操作箱的作用?
- 核磁血管成像问题,求教。。
- 核磁脑血管成像正常,是不是代表不会得脑出血了?,还有脑出血会慢慢的持续到很久才被发现吗?。
- 流变仪测定物质粘弹性问题求教
- 关于电化学工作站,氧化还原电位问题求教
- 关于电子剥离试验机读取和换算问题?
- 使用电子剥离试验机测抗拉测试结果是Fd183.1N和F-9.15KN/m这2个结果具体是什么意思。还有KN/m和N/cm之间如何换算啊谢谢举例告诉下。... 使用电子剥离试验机测抗拉测试结果是 Fd 183.1N 和 F- 9.15KN/m 这2个结果具体是什么意思。 还有KN/m和N/cm 之间如何换算啊 谢谢举例告诉下。 展开
- 485压力变送器
- VB中写入数据到dategrid的问题
- 我写的程序,单击一下可以将txt文本框中的数值分别存入dategrid对应的列中,但是我想限制某一文本框值的存入,当这个值和dategrid中已有数值重复时就弹出错误提示:某字段值不能出现重复的值,请问该怎么写,谢谢
- 请教反应釜用温度计问题
- 反应釜上用的温度计,就是外面有个表,可读出温度,下面有个一米或两米长的铁棒可以插在温度计套管里的,这种温度计叫什么温度计,在哪里可买到?
- 求教430单片机读取DHT11温湿度传感器的值,为什么不对呢?
- #include
#defineucharunsignedchar#defineuintunsignedint#defineDATA_INP1DIR|=BIT2;//P1REN|=BIT2;#defineDATA_OUTP1DIR&=~BIT2;//P1REN|=BIT2;#defineS_DATA_HP1OUT... #include #define uchar unsigned char #define uint unsigned int #define DATA_IN P1DIR |= BIT2; //P1REN |=BIT2; #define DATA_OUT P1DIR &=~BIT2; //P1REN |=BIT2; #define S_DATA_H P1OUT |= BIT2; #define S_DATA_L P1OUT &=~BIT2; #define G_DATA P1IN&0X04 uchar value; void main(void) {uchar x;
uchar j,i,temp=0;
WDTCTL=WDTPW+WDTHOLD;
DATA_OUT;
S_DATA_H;
while(1)
{
S_DATA_L;
__delay_cycles(1800); //>18ms
S_DATA_H;
__delay_cycles(50);
DATA_IN;
while(G_DATA!=0); //等待从机拉高
__delay_cycles(65); //80us
for(j=5;j>0;j++)
{
for(i=8;i>0;i--)
{
value<<=1;
while(G_DATA==0); //等待从机数据
temp=0; //短,0
__delay_cycles(40); //40us
while(G_DATA!=0)
temp=1; //长,1
value |=temp;
__delay_cycles(50); //40us
} } } } 展开
5月突出贡献榜
推荐主页
最新话题
-
- #DeepSeek如何看待仪器#
- 干体炉技术发展与应用研究
- 从-70℃到150℃:一台试验箱如何终结智能...从-70℃到150℃:一台试验箱如何终结智能调光膜失效风险?解决方案:SMC-210PF-FPC温湿度折弯试验箱的五大核心价值1. 多维度环境模拟,覆盖全生命周期测试需求超宽温域:支持-70℃至+150℃的极限温度模拟(可选配),复现材料在极寒、高温、冷热冲击下的性能表现;控湿:湿度范围20%~98%RH(精度±3%RH),模拟热带雨林、沙漠干燥等复杂工况,暴露材料吸湿膨胀、分层缺陷;动态折弯:0°~180°连续可调折弯角度,支持R1~R20弯曲半径设定,模拟实际装配中的微小应力,提前预警裂纹、断裂风险。
参与评论
登录后参与评论