社区
VB基础类
帖子详情
怎么向串口发送16进制数字 ?
lovercat
2002-07-31 10:21:42
比如发送 053074 用串口助手的16进制输入就可以正确返回
我就不会弄,请帮忙。
...全文
1281
9
打赏
收藏
怎么向串口发送16进制数字 ?
比如发送 053074 用串口助手的16进制输入就可以正确返回 我就不会弄,请帮忙。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
david1979210
2002-08-01
打赏
举报
回复
报文以数组形式sendout赋到通讯控件.Output即可
david1979210
2002-08-01
打赏
举报
回复
我做过串口通讯的程序,以下是发送子函数的一部分,示例一下,希望有所帮助
Send_Array = Array(CFrameStart_Byte, Length_Byte, Length_Byte, CFrameStart_Byte, CtrField_Byte, _
Ln_Address) ReDim SendOut(UBound(Send_Array) + n)
For count = LBound(Send_Array) To UBound(Send_Array)
SendOut(count) = CByte(Send_Array(count))
Next count
For count = (LBound(Send_Array) + 6) To (UBound(SendOut) - 2) 'ȥ֡ͷ֡β
SendOut(count) = data(count - 6) 'Á´Â·Êý¾Ý
Next count
SendOut(1) = UBound(data) + 3 'Ö¡³¤
SendOut(2) = SendOut(1) 'Ö¡³¤
FrameCheckSum_Byte = M And &HFF '֡УÑéºÍµÍ8λ
SendOut(UBound(SendOut) - 1) = FrameCheckSum_Byte '¹Ì¶¨Ö¡Î²
SendOut(UBound(SendOut)) = End_Byte
lovercat
2002-08-01
打赏
举报
回复
谁帮我把下面的vc翻译成vb?谢谢
==============================================
8.发送十六进制字符
在主对话框中加入一个复选接钮,ID为IDC_CHECK_HEXSEND Caption: 十六进制发送,再利用ClassWizard为其添加控制变量:m_ctrlHexSend;
在ClassView中为SCommTestDlg类添加以下两个PUBLIC成员函数,并输入相应代码;
//由于这个转换函数的格式限制,在发送框中的十六制字符应该每两个字符之间插入一个空隔
//如:A1 23 45 0B 00 29
//CByteArray是一个动态字节数组,可参看MSDN帮助
int CSCommTestDlg::String2Hex(CString str, CByteArray &senddata)
{
int hexdata,lowhexdata;
int hexdatalen=0;
int len=str.GetLength();
senddata.SetSize(len/2);
for(int i=0;i<len;)
{
char lstr,hstr=str[i];
if(hstr==' ')
{
i++;
continue;
}
i++;
if(i>=len)
break;
lstr=str[i];
hexdata=ConvertHexChar(hstr);
lowhexdata=ConvertHexChar(lstr);
if((hexdata==16)||(lowhexdata==16))
break;
else
hexdata=hexdata*16+lowhexdata;
i++;
senddata[hexdatalen]=(char)hexdata;
hexdatalen++;
}
senddata.SetSize(hexdatalen);
return hexdatalen;
}
//这是一个将字符转换为相应的十六进制值的函数
//好多C语言书上都可以找到
//功能:若是在0-F之间的字符,则转换为相应的十六进制字符,否则返回-1
char CSCommTestDlg::ConvertHexChar(char ch)
{
if((ch>='0')&&(ch<='9'))
return ch-0x30;
else if((ch>='A')&&(ch<='F'))
return ch-'A'+10;
else if((ch>='a')&&(ch<='f'))
return ch-'a'+10;
else return (-1);
}
再将CSCommTestDlg::OnButtonManualsend()修改成以下形式:
void CSCommTestDlg::OnButtonManualsend()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE); //读取编辑框内容
if(m_ctrlHexSend.GetCheck())
{
CByteArray hexdata;
int len=String2Hex(m_strTXData,hexdata); //此处返回的len可以用于计算发送了多少个十六进制数
m_ctrlComm.SetOutput(COleVariant(hexdata)); //发送十六进制数据
}
else
m_ctrlComm.SetOutput(COleVariant(m_strTXData));//发送ASCII字符数据
}
现在,你先将串口线接好并打开串口调试助手V2.1,选上以十六制显示,设置好相应串口,然后运行我们这个程序,在发送框中输入00 01 02 03 A1 CC等十六进制字符,并选上以十六进制发送,单击手动发送,在串口调试助手的接收框中应该可以看到00 01 02 03 A1 CC了。
lovercat
2002-08-01
打赏
举报
回复
有没有用过串口调试助手的?我要实现它的16进制输入功能
数组发送能不能给你处理字符串的例子
Pipi0714
2002-08-01
打赏
举报
回复
转换成16进制的数,每两位之间架一个VBCRLF试一试
david1979210
2002-08-01
打赏
举报
回复
可以尝试用数组发送,控制字作为数组元素
lovercat
2002-08-01
打赏
举报
回复
这样就溢出了哦~~~呵呵
05 30 74 每两位表示一个控制,怎么输入呢???
lastcsdn2166
2002-08-01
打赏
举报
回复
hexnumber=hex(053074)
mscomm.output="hexnumber"
三楼の郎
2002-08-01
打赏
举报
回复
dim Send(2) as byte '定义字节型数组
send(0)=&H00 '给数组付值
send(1)=&HA1
mscomm1.commport=1 '串口1
mscomm1.seting="9600,n,8,1" '初始化串口设置
if mscomm1.portopen=false then mscomm1.portopen=true '打开串口
mscomm1.output=send '发送数据
mscomm1.portopen=false '关闭串口
(MFC)SerialPort类实现
串口
发送
16进制
数字
很简单实用的
16进制
串口
通信demo,还带非常实用的虚拟
串口
和
串口
监视工具
python查找
串口
并
发送
16进制
数据
查找系统里存在着的
串口
资源并
发送
和接收
16进制
数字
51单片机
串口
程序,字符串
16进制
发送
与接收
51单片机
串口
程序,字符串
16进制
发送
与接收.docx
CVI
串口
字符串
16进制
转换
CVI
串口
字符串
16进制
转换
串口
调试助手十六进制数据转成十进制float型
无线传感器网络进行数据传输,在pc端使用
串口
调试助手接收十六进制数据,针对每一个数据包进行批量定的数据处理,将数据包中的十六进制数据转换成十进制数据,便于后期处理和利用
VB基础类
7,763
社区成员
197,609
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章