如何用vb把一段字符以十六进制形式通过pc串口传给单片机,然后再返回到pc上,显示在文本框里?

作者&投稿:奚娥 (若有异议请与网页底部的电邮联系)
如何用232端口发十六进制数据到单片机(不是文本串)?就是把一段字符以十六进制形式通过pc串口传给单片机~

任何数据都是二进制的形式发送到终端的,具体到了终端是以何种形式出现,只是终端如何处理数据的问题。 没学过易语言。

自己编写一个函数,进行转换。

....首先,串口所发的数据是有码制变化的。。分为2种情况,字符串和16进制发送。

两种方式的发送和接受方法是不同的。

先说16进制的

Dim sData() As Byte
Dim bData(1 To 6) As Byte
Dim strBuff As String

MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True

bData(1) = &HE0
bData(2) = &H0
bData(3) = &H3F
bData(4) = &H0
bData(5) = &H0
bData(6) = &H1F

MSComm1.InputMode = comInputModeBinary

必须把数据先存进一个字符数组中。

下面是接收的代码
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 Then

MSComm1.InputLen = 0
strBuff = MSComm1.Input
sData() = strBuff

For i = 0 To UBound(sData)
If Len(Hex(sData(i))) = 1 Then
strdata = strdata & "0" & Hex(sData(i))
Else
strdata = strdata & Hex(sData(i))
End If
Next

Text1.Text = strdata

If Text1.Text <> Text2.Text Then
Text2.Text = Text1.Text

List1.AddItem (Text2.Text)

End If

End If
End Sub

下面是发送的代码
MSComm1.Output = bData

好了16进制就是这样。
如果是字符串发送方式就简单了。。直接发送,不用存到数组中。MSComm1.Output = "abcd" 接收只需要把strBuff = MSComm1.Input放在循环中判断就行了。

说明。。一般设备控制多用字符串方法就可以了。。如投影机的控制等。而单片机的控制多用于16进制传输的方法。先要搞清楚用的什么方式。

再说编码的问题。。一般都是 明码转成ascII码再转成16进制码。然后再发送。

再解释一下用数组的理由:
单片机接受数据一般的都是一串16进制值的组合。如1f 00 00 1e ff 2c等等。。要一次发送出一个组合的数据,必须用数组存这些数据后发送这个数组!

VB 不难的

多看 MSDN

建议 看书 Visual_Basic与_RS-232_串行通信控制

清华出版,很经典

太阳雨多年积攒极其珍贵的原创VB串口通信技术资料V3.0(800M)

1.VB串口通信编程源码200个,多种行业多种应用...
2.VB串口通信技术文章160篇,详尽地对VB串口通信的诠释...
3.VB串口通信电子书籍16部,工业通信名家著作,经典细致...
4.VB串口通信控件16个,简化串口通信编码,提高开发效率...
5.VB串口视频教程46个,两套完整视频教程,讲解直观,更快掌握...
6.OSI网络模型教程48M,帮助你学习网络通讯基础...
7.串口硬件层知识资料包24M,对RS232,RS422,RS485等串行接口的完美解释...
8.串口调试工具80个,应用于各种串口调试与校验计算...
9.程序员发展类文章和书籍12部,帮助您的成长,健康和发展....
10.更送虚拟串口调试软件, 帮助你在没有串口的电脑上也能正常调试...

你在淘宝搜索“太阳雨串口资料”就可以找到,希望可以帮助到你。

没有具体的问题?


vb如何截取字符串
pos = InstrRev(FileName, "\\")是取得最后一个\\的位置,路径就是 Private Sub Command1_Click()FileName = "C:\\Program Files\\ghost\\ui\\2.exe"pos = InStrRev(FileName, "\\")aaa = Left(FileName, pos - 1)Print aaa End Sub

vb 如何截取以空格分隔的部分字符串,如“同意 李红 2011-9-23 9:23...
直接用SPLIT函数将字符串打散放到可调数组里,取需要的元素即可。如:Dim a() as string a=Split("同意 李红 2011-9-23 9:23 ")'注意使用英文小写的双引号,不是中文的,否则出错 a(1) 即是“李红”

VB如何截取指定字符后面的N个字符
2、Left(C,n):截取C最左边的n个字符。3

VB里面如何将一个字符串当作语句来执行呢?
Dim textstr As Stringtextstr = " text1.text = 100 "Set sc = CreateObject("ScriptControl")sc.Language = "vbs"sc.AddObject "Me", Me, Truesc.ExecuteStatement textstr

怎么用VB设计一个程序实现删除每一行中的某些字符符号
晕 这么多大神都发了 我都写好了 不发也浪费了 求前楼的理解 Option ExplicitPrivate Sub Form_Load() '多行Text控件属性 '1:是否启用多行(仅能在控件属性窗口设置) 'Text1.MultiLine = True '2:是否设置滚动条(仅能在控件属性窗口设置) 'Text1.ScrollBars = 2 '界面初始化 Command1....

vb 分割一段字符串,print出来
Text1.Text="gybdf;jkhjsfgs;kfksdfurukyewojhjk;dyadyhrturt"Dim a Dim i As Integer a = Split(Text1.Text, ";")For i = 0 To UBound(a)Print a(i)Next

VB中在文本中输入一段字符串,怎么分别提取出各个字符给一个数组
Option Explicit Dim a() As String Dim n As Integer Private Sub Command1_Click()ReDim a(Len(Text1.Text))For n = 1 To Len(Text1.Text)a(n) = Mid(Text1.Text, n, 1)Print a(n)Next n End Sub 有问题再找我。

vb中如何从一个文本框中提取需要的字符
str5(0) = 255 '字串的前两个Byte存该字串的最大长度 str5(0) = 255 i = SendMessage(Text1.hwnd, EM_GETLINE, ntx, str5(0))If i = 0 Then GetaLine = ""Else str6 = StrConv(str5, vbUnicode)GetaLine = Left(str6, InStr(1, str6, Chr(0)) - 1)End If End ...

vb 替换字符
Replace函数的返回值是一个字符串,但是,其中从start所指定的位置开始,到expression字符串的结尾处的一段子字符串已经发生过替换动作。并不是原字符串从头到尾的一个复制。代码示例:Private Sub Command1_Click() Dim strSj As String Dim strTh As String strSj = "VB使用Replace函数实现...

VB如何截取字符串
VB6里 right的函数是取一段字符串的右边几个字符 比如 dim a as string dim b as string a="12345678"b=right(a,4)那么b的值是5678

珙县15914557936: vb如何显示十六进制数据 -
甫定舒萨: 1)VB使用&H前缀拼接十六进制字符串,可作为16进制数直接使用.适当范围内的数字,前缀以 &H,可以直接表示十六进制数字.例如,十六进制表示法的 &H10 代表十进制的 16.2)使用Hex 函数可返回代表十六进制数值的 String.Hex 函数...

珙县15914557936: 如何用vb把一段字符以十六进制形式通过pc串口传给单片机,然后再返回到pc上,显示在文本框里?
甫定舒萨: ....首先,串口所发的数据是有码制变化的..分为2种情况,字符串和16进制发送. 两种方式的发送和接受方法是不同的. 先说16进制的 Dim sData() As Byte Dim bData(1 To 6) As Byte Dim strBuff As String MSComm1.CommPort = 1 ...

珙县15914557936: 求VB将中文字符转换成相应的16进制编码的源代码 -
甫定舒萨: 这个函数,可以用来生成任意字符的16进制码,Unicode和ANSI都支持:Function GetHex(ByVal Str1 As String, IsANSI As Boolean) As String Dim b1() As Byte If IsANSI Then b1 = StrConv(Str1, vbFromUnicode) Else b1 = Str1 Dim s1 As Long, ...

珙县15914557936: 求vb中将字符串转换为16进制的ascii码代码 -
甫定舒萨: private sub command1_click()for i = 1 to len(text1.text)n = jinzhizhuanh(asc(mid(text1.text, i, 1)))jieguo = jieguo & n & " " next itext2.text = jieguoend subfunction jinzhizhuanh(n as integer) as string dim a(15) as stringb = "0,1,2,3,4,5,6,7,8,...

珙县15914557936: VB中怎么使字符串转换成16进制数据参与运算 -
甫定舒萨: Val(" & b)这个就是转换成十进制hex(Val(" )/val("&Ha0))用VAL函数转10进制 运算后再用hex函数转回十六 不很简单么...

珙县15914557936: 把输入的汉字转化成为十六进制代码?最好是vb编的,别发网上的,我都看过了!最好详细点 -
甫定舒萨: 有两个函数,你用用看.例:AscW("汉") 返回以十进值表示的字符码27721 Hex(27721) 将十进制转换为十六进制码6C49

珙县15914557936: VB中汉字字符串转成16进制编码 -
甫定舒萨: “他是一个16进制数” 这个可能有点问题 参数的类型应该没有分什么进制的,16进制只是查看程序显示比较方便罢了 直接把Ansi压入就可以了 也就是直接压入Strconv("我是中国人",vbFromUnicode) 如果说程序发送的真的是十六进制字...

珙县15914557936: 关于vb将字符转换为16进制的小程序 -
甫定舒萨: Private Sub Command1_Click() Dim s() As String Dim sstr As String Dim sstrs As String Dim j As Integer Dim i As Integer sstr = Text1.Text ReDim s(Len(sstr$) - 1) For j = 1 To Len(sstr$) s(j - 1) = Mid(sstr$, j, 1) Next j For i = 0 To Len(sstr$) - 1 sstrs = sstrs &道 Hex(Asc(s(i))) Next i Text2.Text = sstrs End Sub

珙县15914557936: 求vb中将字符串转换为16进制的ascii码 -
甫定舒萨: Dim i As Integer text2="" For i = 1 To Len(Text1) Text2 = Text2 + format(Hex(Asc(Mid(Text1, i, 1))),"0000") Next 以上为热心网友的结果,只是为了准确转换数字与汉字,加了一点东西.

珙县15914557936: vb怎么去做字符串转十六进制的代码 -
甫定舒萨: 使用hex(asc(a))

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网