v60做的串口助手程序Word格式文档下载.docx
- 文档编号:17015473
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:13
- 大小:18.23KB
v60做的串口助手程序Word格式文档下载.docx
《v60做的串口助手程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《v60做的串口助手程序Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
DoDataExchange(CDataExchange*pDX)
CDialog:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSCommTestDlg)
DDX_Text(pDX,IDC_EDIT_RECV,m_strRecvData);
DDX_Control(pDX,IDC_MSCOMM1,m_cComm);
DDX_Text(pDX,IDC_EDIT_SEND,m_strSendData);
//}}AFX_DATA_MAP
BEGIN_MESSAGE_MAP(CSCommTestDlg,CDialog)
//{{AFX_MSG_MAP(CSCommTestDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_SEND,OnButtonSend)
ON_BN_CLICKED(IDC_RADIO3,OnRadio3)
ON_BN_CLICKED(IDC_RADIO4,OnRadio4)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_R,OnR)
ON_BN_CLICKED(IDC_RADIO2,OnRadio2)
ON_BN_CLICKED(IDC_BUTTON1,OnButton1)
ON_BN_CLICKED(IDC_RADIO5,OnRadio5)
ON_BN_CLICKED(IDC_RADIO1,OnRadio1)
ON_WM_CTLCOLOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//CSCommTestDlgmessagehandlers
BOOLCSCommTestDlg:
OnInitDialog()
OnInitDialog();
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'
smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);
//Setbigicon
SetIcon(m_hIcon,FALSE);
//Setsmallicon
//TODO:
Addextrainitializationhere
m_editFont.CreatePointFont(140,"
宋体"
//IDC_EDIT_RECV.SetFont(&
m_editFont);
//设置新字体
GetDlgItem(IDC_EDIT_RECV)->
SetFont(&
//添加的对串口的初始化语句
if(m_cComm.GetPortOpen())//如果发现串口本来是打开的,则关闭串口
m_cComm.SetPortOpen(FALSE);
m_cComm.SetCommPort
(1);
//选择COM1端口
m_cComm.SetInputMode
(1);
//输入方式为二进制方式
m_cComm.SetInBufferSize(1024);
//设置输入缓冲区
m_cComm.SetOutBufferSize(1024);
//设置输出缓冲区
m_cComm.SetSettings("
9600,e,8,1"
//波特率9600,无校验,8个数据位,1个停止位
if(!
m_cComm.GetPortOpen())
m_cComm.SetPortOpen(TRUE);
//打开串口
m_cComm.SetRThreshold
(1);
//每当接收缓冲区有1个字符则接收串口数据
m_cComm.SetInputLen(0);
//设置当前缓冲区长度为0
m_cComm.GetInput();
//预读缓冲区以清除残留数据
else
AfxMessageBox("
打开端口失败!
MB_ICONSTOP,0);
CBitmapbmp;
bmp.LoadBitmap(IDB_BITMAP1);
m_backbrush.CreatePatternBrush(&
bmp);
bmp.DeleteObject();
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
OnPaint()
if(IsIconic())
{
CPaintDCdc(this);
//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&
rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicon
dc.DrawIcon(x,y,m_hIcon);
}
else
CDialog:
OnPaint();
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
HCURSORCSCommTestDlg:
OnQueryDragIcon()
return(HCURSOR)m_hIcon;
BEGIN_EVENTSINK_MAP(CSCommTestDlg,CDialog)
//{{AFX_EVENTSINK_MAP(CSCommTestDlg)
ON_EVENT(CSCommTestDlg,IDC_MSCOMM1,1/*OnComm*/,OnComm,VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
OnComm()
Addyourcontrolnotificationhandlercodehere
//从串口接收数据并显示在编辑框中
VARIANTvariant_inp;
COleSafeArraysafearray_inp;
longlen,k;
byterxdata[512];
//设置BYTE数组
CStringstrtemp,bs;
if(m_cComm.GetCommEvent()!
=0)//值为2表示接收缓冲区内有字符
variant_inp=m_cComm.GetInput();
//读缓冲区消息
//safearray_inp=variant_inp;
///变量转换
//len=safearray_inp.GetOneDimSize();
//得到有效的数据长度
//variant_inp=m_ComPort.GetInput();
//读缓冲区
safearray_inp=variant_inp;
//VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize();
//得到有效数据长度
//m_strRecvData.SetSel(-1,-1);
//自动滚屏(其中m_Edit是EDIT筐所关联的EDIT控制对象)?
//m_strRecvData.ReplaceSel(sNewString+"
\r\n"
//自动换行?
if(m_a==1)
bs.Format("
%d"
s);
m_strRecvData+=bs;
m_a=0;
for(k=0;
k<
len;
k++)
safearray_inp.GetElement(&
k,rxdata+k);
//m_strRecvData=m_a;
k++)//将数组转换为CString型变量
BYTEbt=*(char*)(rxdata+k);
//字符型
if(m_c)
strtemp.Format("
%02X"
bt);
%c"
//将字符送入临时变量strtemp存放
m_strRecvData+=strtemp;
//加入接收编辑框对应字符串
/*
CStringtemp=("
//显示完成后要自动换行
if(len<
=7)
m_strRecvData+=temp;
s=s+1;
}*/
UpdateData(FALSE);
//更新编辑框内容
CEdit*output=(CEdit*)GetDlgItem(IDC_EDIT_RECV);
//随时跟踪滚动条的位置
output->
LineScroll(output->
GetLineCount());
OnButtonSend()
/*
CByteArrayArray;
Array.RemoveAll();
Array.SetSize(8);
Array.SetAt(0,1);
Array.SetAt(1,2);
Array.SetAt(2,00);
Array.SetAt(3,00);
Array.SetAt(4,00);
Array.SetAt(5,06);
Array.SetAt(6,248);
Array.SetAt(7,8);
m_cComm.SetOutput(COleVariant(Array));
//以数组的形式发送整形数据
*/
unsignedcharchData[8];
chData[0]=1;
chData[1]=2;
chData[2]=0;
chData[3]=0;
chData[4]=0;
chData[5]=6;
chData[6]=248;
chData[7]=8;
CByteArraybinData;
binData.RemoveAll();
for(inti=0;
i<
8;
i++)
binData.Add(chData[i]);
COleVariantvar(binData);
m_cComm.SetOutput(var);
//以字符数组的方式发送数据
//单击发送按钮的操作
/*UpdateData(TRUE);
intlen;
CByteArrayarray;
len=m_strSendData.GetLength();
array.RemoveAll();
array.SetSize(len);
array.SetAt(i,m_strSendData[i]);
for(intj=0;
j<
j++)
{if((array[j]>
='
0'
)&
&
(array[j]<
9'
))
array[j]=array[j]-0x30;
elseif((array[j]>
A'
F'
array[j]=array[j]-'
+10;
a'
f'
m_cComm.SetOutput(COleVariant(array));
//发送数据
m_a=1;
UpdateData(TRUE);
//读取编辑框内容
if(m_b)
SetTimer(1,100,NULL);
//时间为1000毫秒
if(m_b==0)
KillTimer
(1);
//取消定时
CByteArrayhexdata;
intlen=String2Hex(m_strSendData,hexdata);
//此处返回的len可以用于计算发送了多少个十六进制数
m_cComm.SetOutput(COleVariant(hexdata));
//发送十六进制数据
//m_cComm.SetOutput(COleVariant(m_strSendData));
//发送数据
//charm_s=0;
//m_cComm.SetOutput(COleVariant(m_s));
//m_strSendData.Empty();
//发送后清空输入框
//UpdateData(false);
//对发送的数据进行强制类型转换,由CString字符串数据转换为VARIANT类型。
//UpdateData(TRUE);
//intleng[]={010200000006f808};
//CByteArrayarray;
//leng=m_strSendData.GetLength();
//array.RemoveAll();
//array.SetSize(leng);
//for(inti=0;
leng;
//array.SetAt(i,m_strSendData[i]);
//m_cComm.SetOutput(01);
//if(len<
if(m_d==1)
m_strRecvData.Empty();
//UpdateData(false);
UpdateData(false);
charCSCommTestDlg:
ConvertHexChar(charch)
if((ch>
(ch<
returnch-0x30;
elseif((ch>
returnch-'
elsereturn(-1);
intCSCommTestDlg:
String2Hex(CStringstr,CByteArray&
senddata)
inthexdata,lowhexdata;
inthexdatalen=0;
intlen=str.GetLength();
senddata.SetSize(len/2);
for(inti=0;
)
charlstr,hstr=str[i];
if(hstr=='
'
i++;
continue;
if(i>
=len)
break;
lstr=str[i];
hexdata=ConvertHexChar(hstr);
lowhexdata=ConvertHexChar(lstr);
if((hexdata==16)||(lowhexdata==16))
else
hexdata=hexdata*16+lowhexdata;
senddata[hexdatalen]=(char)hexdata;
hexdatalen++;
senddata.SetSize(hexdatalen);
returnhexdatalen;
OnRadio3()
m_c=0;
OnRadio4()
m_c=1;
OnTimer(UINTnIDEvent)
Addyourmessagehandlercodehereand/orcalldefault
OnButtonSend();
OnTimer(nIDEvent);
OnR()
m_b=1;
OnRadio2()
m_b=0;
OnButton1()
s=0;
UpdateData(false);
OnRadio5()
m_d=0;
OnRadio1()
m_d=1;
HBRUSHCSCommTestDlg:
OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)
HBRUSHhbr=CDialog:
OnCtlColor(pDC,pWnd,nCtlColor);
ChangeanyattributesoftheDChere
if(pWnd==this)
returnm_backbrush;
Returnadifferentbrushifthedefaultisnotdesired
returnhbr;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- v60 串口 助手 程序