仪器网(yiqi.com)欢迎您!

| 注册 登录
网站首页-资讯-专题- 微头条-话题-产品- 品牌库-搜索-供应商- 展会-招标-采购- 社区-知识-技术-资料库-方案-产品库- 视频

问答社区

VB读取485温度计问题求教

G_Dragon龍龍 2017-06-02 00:34:13 398  浏览
  • 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。 我想获取温度计温度,该如何写啊,求高手指点,附通讯协议。 展开
2017-06-02 00:34:13 398 1
VB 关于MODBUS RTU 通讯数据读取问题
看网上其它人写的源程序,读取输入时 Dim a(8) As Byte a = MSComm1.Input 但是我在运行时,总是提示"不能给数组赋值",看帮助说明也是不能给数组赋值,那其他人的程序上是怎么实现的?(已将串口模式更改为二进制模式). 谢谢!
2012-04-16 05:26:04 387 2
怎样读取温湿度传感器的485数据
 
2012-02-19 02:59:12 262 3
LabVIEW中VISO读取老是失败,想读取电子负载输入功率,求教。
2015-11-15 09:39:11 399 1
求教:压力控制问题。
我想设计一套气压控制的检测系统,情形大致如下:1、向密闭的空间(大约20立方厘米)注入压缩空气,保压,测得气压值P1。2、持续保压10秒之后,测得气压值P2。3、将前后测得的气压值对... 我想设计一套气压控制的检测系统,情形大致如下:1、向密闭的空间(大约20立方厘米)注入压缩空气,保压,测得气压值P1。 2、持续保压10秒之后,测得气压值P2。 3、将前后测得的气压值对比,如果漏气,则所测产品不合格,不漏气为合格。 请问:除去机械部分,我该选用哪些电器控制元件,请推荐一下具体产品的品牌以及型号。 展开
2010-11-21 13:08:05 427 2
求教一个拉曼光谱问题?
请问一下,我做的铁掺杂的二氧化锡(Fe-doped SnO2),拉曼光谱做出来存在Fe2O3和SnO2的峰,这里Fe2O3的峰时证明样品中存在氧化铁,还是说明铁是以三价形式进入SnO2晶格的啊!XRD中无Fe2O3峰!
2013-11-23 00:31:58 421 5
scanf读取文件的问题
如何用scanf读取以下格式的数据有空格和其他字符,如何得到这四组数 1892-22-54 55:22:99,11.347213,0.585384 scanf(“”,)
2014-04-02 04:44:24 342 2
plc通过485通讯读取苍南流量计evc300的方法,急急,谢谢
 
2017-06-07 04:30:09 291 2
求教灯丝电流不够问题
 
2017-03-16 00:48:59 445 1
求教,蜘蛛的运输问题
 
2017-07-24 06:53:08 445 1
变压器温度计的问题?
图片中温度计中的1、2、3、4的指针标注的意思对吗?我总觉得不对!另外红色指针是干什么用的?谢谢1,2,3,4那有四个小指针... 图片中温度计中的1、2、3、4的指针标注的意思对吗?我总觉得不对!另外红色指针是干什么用的?谢谢 1,2,3,4那有四个小指针 展开
2017-09-08 09:11:53 396 1
求教断路器操作箱的问题
Z近在效验500KV的线路保护装置,那些保护AB屏的信号出口好像都是送到断路器操作箱里面去,求高人指点断路器操作箱的作用?
2017-09-05 02:34:17 487 1
核磁血管成像问题,求教。。
核磁脑血管成像正常,是不是代表不会得脑出血了?,还有脑出血会慢慢的持续到很久才被发现吗?。
2011-08-11 23:41:22 321 1
流变仪测定物质粘弹性问题求教
 
2017-02-20 18:37:33 307 1
关于电化学工作站,氧化还原电位问题求教
 
2015-12-09 04:56:25 590 1
关于电子剥离试验机读取和换算问题?
使用电子剥离试验机测抗拉测试结果是Fd183.1N和F-9.15KN/m这2个结果具体是什么意思。还有KN/m和N/cm之间如何换算啊谢谢举例告诉下。... 使用电子剥离试验机测抗拉测试结果是 Fd 183.1N 和 F- 9.15KN/m 这2个结果具体是什么意思。 还有KN/m和N/cm 之间如何换算啊 谢谢举例告诉下。 展开
2014-03-07 11:44:46 447 1
485压力变送器
 
2018-12-04 09:29:03 185 0
VB中写入数据到dategrid的问题
我写的程序,单击一下可以将txt文本框中的数值分别存入dategrid对应的列中,但是我想限制某一文本框值的存入,当这个值和dategrid中已有数值重复时就弹出错误提示:某字段值不能出现重复的值,请问该怎么写,谢谢
2011-05-07 03:29:04 404 3
请教反应釜用温度计问题
反应釜上用的温度计,就是外面有个表,可读出温度,下面有个一米或两米长的铁棒可以插在温度计套管里的,这种温度计叫什么温度计,在哪里可买到?
2009-09-17 16:21:35 663 1
求教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
} } } } 展开
2013-05-31 23:15:31 437 2

5月突出贡献榜

推荐主页

最新话题