有没有VB高手,问个问题~ 点击:1029 | 回复:17



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-09-12 21:50:00
楼主
本人在公司做东东的时候,用VB和PLC通信,收到数据寄存器D里的数据,过来都是16进制的,偶想把它变10进制显示在TEXT里,开始用了个笨方法,就是写: TEXT1.TEXT=MID(MSCOMM1.INPUT,6,1)*16+MID(MSCOMM1.INPUT,7,1) 哈,本人VB知识浅薄,用上面方法做的时候,第一次没换数据寄存器D里的数据还可以,显示对的,但是当我用按键控制D里的数据变化,VB马上出来什么“类型不正确”,调试的时候就是我刚写的一句话有问题,请高手指导,飞雪JJ(你不说当你是JJ,是GG也不要生气)指导拉,帮写下去,我写到:TEXT1.TEXT=MID(MSCOMM1.INPUT,6,2)的时候,调试正常的,就是出来的是16进制的数据,帮忙加点东西,改成10进制,用自定义变量没关系,偶还看的懂,应该不是太难的问题吧,不过在学校偶没学过VB(当时学的PASCL,郁闷),所以请大家帮忙指点。 啊里呀多,古大意吗司!!!



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-21 21:00:00
1楼
……>_<……就算不懂也帮我顶先,直到懂的回啊~~

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-21 21:05:00
2楼
public Function strToHex(str As String) As Integer Dim intH, intL As Integer intH = Asc(Mid$(str, 2, 1)) intL = Asc(Mid$(str, 3, 1)) If intH >= 48 And intH <= 57 Then intH = intH - 48 Else intH = intH - 65 End If If intL >= 48 And intL <= 57 Then intL = intL - 48 Else intL = intL - 65 End If strToHex = intH * 16 + intL End Function

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-21 21:05:00
3楼
TEXT1.TEXT=cint(strToHex(MID$(MSCOMM1.INPUT,6,2))) OK,试试看

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-21 21:08:00
4楼
千万别弄错了,函数strToHex是自定义的,刚才没提交成功,现在可以了,你试试看吧,这是我用来控制PLC的模块中的一个函数,说真的,方法挺笨的

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-21 21:18:00
5楼
好,我试试,哈,真感谢了~~~

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-21 21:20:00
6楼
看了看函数,感觉是一个16换10的过程吧,哈,VB内部怎么不带一个16换10的函数啊,真破~

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-21 21:24:00
7楼
Cint()或者int()都可以将16进制的数变成10进制,别搞错了,是16进制的数,不是表示16进制数的字符串,我给的函数是将字符串变成16进制的数,例:“6F”——>&H6F,这下明白了吧

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-21 21:35:00
8楼
小飞侠,把你用VB做的与PLC通信的代码提供一份如何,我的信箱:zcjyxb@sohu.com

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-22 07:10:00
9楼
哦。没问题的,其实我做的这个通信很简单的,无非就是利用VB做的按键,每个按键对应MSCOMM32控件发出一串指令。控制PLC的中间继电器至1或0,还有就是利用TIME控件定时发出接受PLC内部寄存器D里的数据的指令,然后显示在VB的TEXT控件里,所以才会问到16换10的问题哈。 你要是有兴趣,等我今天晚上回来带一部分过来(哈,其实主要都是重复,100个按键动作都是互相拷拷,改改字符串而已),发到论坛里吧,主要就是初始化那里还有的看头,也是我在网上找的,估计对飞雪JJ没多大用,但是对刚开始接触VB和PLC通信的朋友应该很有帮助,哈,不用多谢我了

SUPPER

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 35回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2001年8月06日
发表于:2003-07-22 09:10:00
10楼
小飞侠,把你用VB做的与PLC通信的代码提供一份如何,我的信箱:zcjyxb@sohu.com

SUPPER

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 35回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2001年8月06日
发表于:2003-07-22 09:11:00
11楼
小飞侠,把你用VB做的与PLC通信的代码提供一份如何,我的信箱:hejing@vip.sina.com

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-22 18:24:00
12楼
不好意思,明天出差去宁波,今天没把程序带回来,礼拜4吧,晚上把程序给大家公开,虽然不很复杂,但是也是我弄了1个礼拜多啊!刚开始做没经验,难免的。 飞雪姐姐,你的程序偶不能用啊,我把你做的函数烤过去,调试的时候说 intL=asc(mid$(str,3,1))无效 8过偶想到了个简便方法,你看你用的上不,就是字符串改数字的 DIM A AS STRING DIM B AS STRING DIM C AS STRING A=MID(MSCOMM1。INPUT,6,2) B="&H"+A C=val(B) text1.text=C 哈哈,解决问题,16化10显示~~~~~~~~~ 各位试试很好用的啊,用好了记得偶小飞侠啊~~~~~~~~~~~

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-22 18:39:00
13楼
抱歉,是我错了,在我的程序中传递的是PLC返回的数据字符串,该字符串第一个为&H02,第二个和第三个为需要处理的数据,告诉你的时候没考虑那么多,呵呵,改一下就行了: intH = Asc(Mid$(str, 1, 1))    intL = Asc(Mid$(str, 2, 1))

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-22 18:45:00
14楼
小飞侠,你的程序也不错,呵呵,谢谢你的提醒

摔哥

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 15回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2003年9月29日
发表于:2003-07-29 01:47:00
15楼
小飞侠,我想跟你交个朋友好吗,我很想跟你学PLC程序,你可以教我吗

PROFIBUS-DP

  • 精华:0帖
  • 求助:0帖
  • 帖子:74帖 | 306回
  • 年度积分:0
  • 历史总积分:637
  • 注册:2003年8月29日
发表于:2003-08-30 15:59:00
16楼
学习交流zhouqingfei@yahoo.com.cn QQ:39161700 我也在做PLC的通讯编程

西湖醋鱼

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2003年9月05日
发表于:2003-09-12 21:50:00
17楼
小飞侠,你的PLC通信程序能给我一份吗?我是个VB新手!以后还请你多指教!我的信箱chb411@tom.com

热门招聘
相关主题

官方公众号

智造工程师