你现在位置:首页>技术论文>数据通讯>正文
VB接收到PLC的十六进制码如何转为10进制码?
日期:2006-5-15 23:38:36 来源:本站整理  
点击: 作者:未知
点击【】放大字体.

VB接收到PLC的十六进制码如何转为10进制码?

plcjs.技.术_网

 
   大家好!本人最近使用VB6.0的MSCCOM控件与PLC通讯,PLC送过来的数据在PC端均显示为16进制数,如何把它转为十进制数呢?我前段时间也看过类似问题的贴子,现在我也遇到此问题,希望VB高手提供脚本程序?在此多谢大家了!急!!!
P.L.C.技.术.网——可编程控制器技术门户

以下是对《VB接收到PLC的十六进制码如何转为10进制码?》的回复:  

WWW_P※LCJS_CO※M-PLC-技-.术_网

匿名回复:
——可——编——程——控-制-器-技——术——门——户

    设s是待转换的16进制/8进制数或字串:
P.L.C.技.术.网——可编程控制器技术门户

  16进制HEX -> 10进制DEC:
WWW_P※LCJS_CO※M-PLC-技-.术_网

  Val("&H" & s)
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

  8进制OCT -> 10进制DEC:
WW.W_PLCJS_COM-PLC-技.术_网

  Val("&O" & s)
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

匿名回复:
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

    那反过来,如果我想把十进制数转换为十六进制或八进制数呢?
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

  请问在VB中怎么做?有没有现成的函数?请教各位!
WWcW_PLCJS_COM-PLC-技.术_网

匿名回复:
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

    那反过来,如果我想把十进制数转换为十六进制或八进制数呢?
WWW_PL※CJS_COM-PLC-技.术_网

  请问在VB中怎么做?有没有现成的函数?请教各位!
WWW_P※LCJS_COM-PLC-)技.术_网

匿名回复:
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

    Hex(s)和Oct(s)
WWW_PLCJS@_COM%-PLC-技.术_网

匿名回复:
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

    知道了。
WWW_P※LCJS_COM-PLC-)技.术_网

  谢谢你,关公!
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

匿名回复:
WWW.PLCJS.COM——可编程控制器技术门户

    非常感谢关公和hustsup两位先生的贴子,但我在按关公先生的方法试着搞时,又遇到问题,首先我在此交代一下,如我接收的字据是不确定的,我在脚本程序中把所有的数据(不管长度)经过转换均放在buf中,然后在TextBox控件中显示出来,显示脚本程序为:txtReceive.Text=buf,然后我可以把接收到的字数已按16进制显示出来了,如接收到的数为:C1,B0,B9,B9,B9,B8,8D;然后我按关公的提示在脚本程序中加了如下的脚本程序:
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  txtVal=Val("&h"&buf);
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

  然后txtReceive.Text=buf改为
WWW_P※LCJS_CO※M-PLC-技-.术_网

  txtReceive.Text=txtVal;(注此处由原来buf改为txtVal)
——可——编——程——控-制-器-技——术——门——户

  然后其它不变.
plcjs.技.术_网

  编译执行之后提示实时错误为:溢出,并指出错误在增加的句子处,即:txtVal=Val("&h"&buf)错误!
W1WW_P4LCJS_COM-PLC-技.术_网

  请问关公你所教的方法是不是只是一个单独数据可转换,太多了则会溢出,应当怎么增加脚本程序呢?
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  希望能得到关公大哥的指点,在此多谢了!
WWW_PL※CJS_COM-PLC-技.术_网

  
WWW_PLCJS@_COM%-PLC-技.术_网

匿名回复:
WWcW_PLCJS_COM-PLC-技.术_网

    用Val()函数变换一个大于Long型的16进制数时会产生溢出。
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

  如:Val("&H" & "C1B0B9B9B9B88D") 时产生溢出;
WWW_PLCJS_COM-PLC-技.术_网

  但如:Val("&H" & "C1,B0,B9,B9,B9,B8,8D") 时,由于逗点的分隔,它在遇到第一个非16进制字符时就结束,其结果只是第一个数得到变换,因此它不会溢出。
P.L.C.技.术.网——可编程控制器技术门户

  以上方法都不能把各个数据分离出来,正确的方法是用对应类型和下标量的数组,多次变换对应装入。
WWcW_PLCJS_COM-PLC-技.术_网

  或仍用一个字符串变量逐个进行:数制变换->加分隔符->串接.
WWcW_PLCJS_COM-PLC-技.术_网

  
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

匿名回复:
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

    还请注意:FX-PLC总是返回以字节为单位的16进制字串,用它表示位元件时不会有问题,但如果它表示的是字元件的值,是成对出现且低字节在前,高字节在后的。如返回"C1B0"是D0的值的话,应理解为:D0 = B0C1h = 45249。
WWW_PLCJS_COM-PLC-技.术_网

  同理如“12345678”是某个双字元件的值时,则应理解为:78563412h。
WW.W_PLC※JS_C,OM-PL,C-技.术_网

匿名回复:
WWW_P※LCJS_COM-PLC-)技.术_网

    非常感谢关大哥的贴子,我一早就上来看你的贴子,无奈小女子才疏学浅,对VB不是很熟,所以按你的方法东撞西撞还是不得要领.对了,原来我这程序是用来跟PLC通讯的,但现在是跟一个仪表通讯,所以读出来的数是长短不一的,这样好不好,我把接收的全部程序放在贴子里,烦关大哥帮忙一下如何,如修改好之后可发邮件到:LLL_Lenny@163.com给我,接收的程序如下:
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  Private Sub Comm1_OnComm()
WWW_PLC※JS_COM-PmLC-技.术_网

  Select Case Comm1.CommEvent
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

  Case comEvCD
WWW_P※LCJS_COM-PLC-)技.术_网

  Case comEvCTS
WWW_PL※CJS_COM-PLC-技.术_网

  Case comEvDSR
P.L.C.技.术.网——可编程控制器技术门户

  Case comEvRing
WWW.PLCJS.COM——可编程控制器技术门户

  Case comEvReceive
WWW.PLCJS.COM——可编程控制器技术门户

  Dim i%, Buf$
——可——编——程——控-制-器-技——术——门——户

  Buf = ""
WW.W_PLCJS_COM-PLC-技.术_网

  InByte = Comm1.Input
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  For i = LBound(InByte) To UBound(InByte)
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

  Buf = Buf + Hex(InByte(i)) + Chr(13) & Chr(10)
P.L.C.技.术.网——可编程控制器技术门户

  Next i
WWW_PLCJS@_COM%-PLC-技.术_网

  txtReceive.Text = Buf
WWW_P※LCJS_CO※M-PLC-技-.术_网

  Case comEvSend
WWW_P※LCJS_CO※M-PLC-技-.术_网

  End Select
plcjs.技.术_网

  End Sub
WWW.PLCJS.COM——可编程控制器技术门户

  我是利用了MSCOMM控件的OnComm事件之CommEvent属性来触发接收,其中InByte在前面有局部声明:Dim InByte() As Byte
WW.W_PLCJS_COM-PLC-技.术_网

  请关大哥帮忙修改如何?小女子在此多谢了.
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

匿名回复:

本新闻共3页,当前在第11 2  3  
WWW_PLCJS@_COM%-PLC-技.术_网

评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行