如:
Dim a As String
Dim b() As Byte
a = "d10200012a"
b() = StrConv(a, vbFromUnicode)
MSComm1.Output = b
实际上其中红色的d1和2a是扩展的高位ascii对应码,但这样做的话它把d1拆成64 31将2a拆成了32 61 发出去了,与我的用来做开始和结束标志的意图不同了,请问我该怎么做才能实现这个意图?
在《Visual Basic与RS-232串行通信控制》一书中使用的是可以用
Dim buf(11) As Byte
buf(0) = 170 'aa
buf(1) = 209 'd1
这种单个单个发。
求问对与扩展的ascii字符在VB里怎么才能表示出来?要想它和其它字符串一起发送我该怎么写了?搞不明白了。
Dim a As String
Dim b() As Byte
a = "d10200012a"
b() = StrConv(a, vbFromUnicode)
MSComm1.Output = b
实际上其中红色的d1和2a是扩展的高位ascii对应码,但这样做的话它把d1拆成64 31将2a拆成了32 61 发出去了,与我的用来做开始和结束标志的意图不同了,请问我该怎么做才能实现这个意图?
在《Visual Basic与RS-232串行通信控制》一书中使用的是可以用
Dim buf(11) As Byte
buf(0) = 170 'aa
buf(1) = 209 'd1
这种单个单个发。
求问对与扩展的ascii字符在VB里怎么才能表示出来?要想它和其它字符串一起发送我该怎么写了?搞不明白了。
解决方案 »
- inet下载网页源文件,能有"多线程"这么一说吗?因为要下载很大量的网页源文件来做分析操作
- 关于ButtonMenu的一个问题?谢谢!
- 为什么总是出现“报表宽度大于纸的宽度”???
- DES算法的代码实现(或流程图表示)
- 关于ADO访问加了密的ACCESS
- 關于Shell命令在VB中的使用﹗
- 从VB到VB.NET应该注意啥
- 不能用dll封装MDI窗体吗 ?100分
- 请教win2000sever和sql server 2000的备份问题
- 如何不通过listview.hittest(xpos, ypos)读取当前光标所在的listitem?
- VB 如何实现对图片框的任意角度矩形裁剪?
- multipart/form-data 的数据包要怎么构造?
Option Explicit
Dim outputArray() As Byte
Dim inputArray(0 To 1023) As Byte
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub btnComm_Click()
ReDim outputArray(0 To 4) As Byte
outputArray(0) = &HD1
outputArray(1) = &H2
outputArray(2) = &H0
outputArray(3) = &H1
outputArray(4) = &H2A
mscP.Output = outputArray
End SubPrivate Sub Form_Load()
With mscP
.CommPort = 1 '定义通信端口号
.Settings = "9600,n,8,1" '定义通信的波特率、校验方式、数据位、停止位
.InputLen = 1 '定义每次在接收缓冲区中读取的字符数
.OutBufferSize = 1024 '定义发送缓冲区大小
.OutBufferCount = 0 '清空发送缓冲区
.InBufferCount = 0 '清空接收缓冲区
.InBufferSize = 1024 '定义接收缓冲区大小
.InputMode = comInputModeBinary '以十六进制进行通信
.RThreshold = 1 '接收到一个字符就触发OnComm时间
If Not .PortOpen Then .PortOpen = True '打开串口
End With
End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If mscP.PortOpen Then mscP.PortOpen = False '关闭端口
End SubPrivate Sub mscP_OnComm()
Dim varInput As Variant
Dim intP As Integer
'当串口接收缓冲区收到数据时...
If mscP.CommEvent = 2 Then
mscP.RThreshold = 0 '屏蔽OnComm事件
Sleep 20 '停止20ms,以便串口数据完全返回
intP = 0
Do
varInput = Null
varInput = mscP.Input
If Not IsNull(varInput) Then inputArray(intP) = varInput(0)
intP = intP + 1
Loop Until mscP.InBufferCount <= 0
mscP.RThreshold = 1 '恢复OnComm事件的触发
End If
End Sub
c = &HD1
MSComm1.Output = c
运行后是无效的属性值,不能用MSComm1.Output = c这样发送吗?
b(i) = Val("&H" & Mid(a, i * 2 + 1, 2))
Next i MSComm1.Output = bStrConv 获取的是串的 ASCII 码,不是十六进制串的表达式值。
dim b() as byte
a = "d10200012a"
L=len(a)
redim b(L\2-1)
for i=1 to L step 2
b(i) =val("&h" & mid(a,i,2)
nextMSComm1.Output = b
b(i) =val("&h" & mid(a,i,2)
nextb 的索引值有问题。