成都创新互联网站制作重庆分公司

vb.net串口定时发送的简单介绍

求教,怎么设置串口通信中的定时发送

设备与单片机串口通信程序,写了两个线程SendThread 和ReadThread,单击发送按钮发送线程发送一组命令数据到单片机,单片机再返回一组数据,读线程把数据显示在编辑框里。求解怎么才能设置单击一次按钮,实现比如1分钟内发送600次数据,接收600次呢。

创新互联建站专业为企业提供鄯善网站建设、鄯善做网站、鄯善网站设计、鄯善网站制作等企业网站建设、网页设计与制作、鄯善企业网站模板建站服务,10余年鄯善做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

C/C++ code?

LONG OnSendComm(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)

{

return TRUE;

}

BYTE ConvertHexChar(BYTE 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;}

DWORD WINAPI SendThread (PVOID pArg) {

HWND hwndSText;

DWORD cBytes;

WCHAR szText[TEXTSIZE];

WCHAR szText1[TEXTSIZE];

WCHAR szText2[TEXTSIZE];

WCHAR szTextt[TEXTSIZE];

WCHAR szTexto[TEXTSIZE];

char szAnsi[TEXTSIZE];

size_t siz;

BYTE tmpByte=0x00;

int strLen=sizeof(szAnsi)-1;

BYTE cmd[TEXTSIZE];

byte cmd1,cmd2;

memset(cmd,'\0',sizeof(cmd));

hwndSText = GetDlgItem (hwnd, ID_SENDTEXT);

for(int i=0;i599;i++){ //发送600次 每次间隔100ms

Sleep(100);

if(WaitForSingleObject(g_hSendEvent,-1)==WAIT_OBJECT_0)

{

// 获得发送内容并转换成asci码

GetWindowText (hwndSText, szText, dim(szText));

swscanf(szText,L"%[^ ]",szText1);

swscanf(szText,L"%*s%s",szText2);

byte cmd1=wcstol(szText1,NULL,16);

limit=wcstol(szText2,NULL,10);

byte cmd2=0x68+0xA1+0x04+cmd1;

wsprintf(szTexto,L"%02X",cmd2);

wsprintf(szTextt,L"68 a1 04 %s %s",szText1,szTexto);

wcstombs_s (siz, szAnsi, sizeof (szAnsi), szTextt, _TRUNCATE);

for(int i=0,j=0;i64,jstrLen;i++,j++)

{

if(szAnsi[j]==' ')

++j;

tmpByte=szAnsi[j];

cmd[i]=ConvertHexChar(tmpByte)4;

if(szAnsi[++j]==' ')

++j;

tmpByte=szAnsi[j];

cmd[i]=cmd[i]+(ConvertHexChar(tmpByte)0xF);

}

VB.net 串口发送数据

你可以这样操作:

Form1.BeginInvoke(Sub()

'一些操作

End Sub)

这样主线程就会放下手里的事情并执行Sub里的操作了

vb.net 串口收发数据有问题

不知道你是不是用51单片机往串口发数据,是的话那是因为51的sbuf最多存放8个字节,所以你发12个字节会分成两次发完。还有在接收的时候最好定义好通信协议,比如加一个侦头,一个侦尾,通过这两个字节的内容来接收数据。

老兄,提问还是给点悬赏分嘛,不要吝啬哪点分,知识是无价的,你给得越多,回答你的人才会越多。

VB.NET使用AxMSComm实现串口通信的发送读取问题?

上面的代码看不出问题,如果初始化串口控件时已经注册了AxMSComm1_OnComm,有数据接收应该能触发,至于为什么没有触发,要看看你的接收方是否已经收到你的发出指令,是否已经有响应数据回发。

建议分开调试,用一个通用的串口助手,如格西烽火串口助手之类的,分别调试你的上位机和下位机。格西烽火串口助手能轻松的定制如你上面的发送数据。


本文题目:vb.net串口定时发送的简单介绍
分享路径:http://cxhlcq.cn/article/hdhghp.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部