怎么在vb中通过mscomm控件的output 向外以十六进制发送“01”?是“01”不是“1”哦,今天在线等

外面的仪器接收到十六进制的“01”信号后,会以ascii码的方式返回数据,我要把它显示在文本框里面,能写下完整的程序么?... 外面的仪器接收到十六进制的“01”信号后,会以ascii码的方式返回数据,我要把它显示在文本框里面,能写下完整的程序么? 展开
 我来答
阿KingGz
2012-05-13 · TA获得超过134个赞
知道小有建树答主
回答量:180
采纳率:0%
帮助的人:100万
展开全部
新建工程,在表单中放入Command1和Text1和MsComm1控件,并设置好通讯控件的Port和Settings,粘贴以下代码:

Private Sub Command1_Click()
Dim v(0) As Byte
v(0) = &H1
MSComm1.Output = v
End Sub

Private Sub Form_Load()
MSComm1.PortOpen = True
MSComm1.InputMode = comInputModeText
End Sub

Private Sub MSComm1_OnComm()

If MSComm1.CommEvent = comEvReceive Then
Text1.Text = MSComm1.Input
End If

End Sub
百度网友4ab8b0eb3
2012-05-16 · TA获得超过185个赞
知道答主
回答量:153
采纳率:0%
帮助的人:53.2万
展开全部
function StrToHexStr(const S: string): string;
//字符串转换成16进制字符串
var
I: Integer;
begin
for I := 1 to Length(S) do
begin
if I = 1 then
Result := IntToHex(Ord(S[1]), 2)
else Result := Result + IntToHex(Ord(S[I]), 2);
end;
end;

function HexStrToStr(const S: string): string;
//16进制字符串转换成字符串
var
t: Integer;
ts: string;
M, Code: Integer;
begin
t := 1;
Result := '';
while t <= Length(S) do
begin
while not (S[t] in ['0'..'9', 'A'..'F', 'a'..'f']) do
inc(t);
if (t + 1 > Length(S)) or (not (S[t + 1] in ['0'..'9', 'A'..'F', 'a'..'f'])) then
ts := '$' + S[t]
else
ts := '$' + S[t] + S[t + 1];
Val(ts, M, Code);
if Code = 0 then
Result := Result + Chr(M);
inc(t, 2);
end;
end;
参考Delphi中是用这两个函数转
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
神话一心
2012-05-11 · 超过26用户采纳过TA的回答
知道答主
回答量:111
采纳率:0%
帮助的人:79.6万
展开全部
你是想发送0x01? 跟发送1是一样的。只是显示不同而已。在vb下面所有十六进制数都是当作整型来处理。当然你可以把接收到的整型用hex()函数处理。得到十六进制字符。可以用format()函数格式成两位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式