一个串口通信的c语言函数 串口通信用到的函数库( 三 )


// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
CWindowDC dc(this);
CFont font;//设置字体
CBrush brush;
brush.CreateSolidBrush(255);
font.CreatePointFont(150,_T("华文行楷"));
dc.SelectObject(font);
dc.SelectObject(brush);
//dc.TextOut(250,300,_T("大族激光软件中心"));
}
//当用户拖动最小化窗口时系统调用此函数取得光标
//显示 。
HCURSOR C串口Dlg::OnQueryDragIcon()
{
return static_castHCURSOR(m_hIcon);
}
void C串口Dlg::OnBnClickedButton1()
{
static char ch1[10];
CString str("");
if(m_CMscomm.get_PortOpen())
m_CMscomm.put_PortOpen(false);
m_CMscomm.put_CommPort(m_Selection+1);
m_CMscomm.put_PortOpen(m_Selection+1);
str.Format("打开串口%d成功",m_Selection+1);
if(m_CMscomm.get_PortOpen())
{
MessageBox(str);
}
else
{
MessageBox("不能打串口");
}
//MessageBox(ch1);
// TODO: 在此添加控件通知处理程序代码
}
void C串口Dlg::OnSelchangeCombo2()
{
// TODO: 在此添加控件通知处理程序代码
//int m_Selection;
m_Selection=m_CComboBox.GetCurSel();
}
void C串口Dlg::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
/*short m_short=m_CMscomm.get_CommPort();
CString str;
str.Format(_T("当前打开端口:%d"),m_short+1);
MessageBox(str);
CDialogEx::OnLButtonDblClk(nFlags, point);*/
}
BEGIN_EVENTSINK_MAP(C串口Dlg, CDialogEx)
ON_EVENT(C串口Dlg, IDC_MSCOMM1, 1, C串口Dlg::OnCommMscomm1, VTS_NONE)
END_EVENTSINK_MAP()
void C串口Dlg::OnCommMscomm1()
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp; if(m_CMscomm.get_CommEvent()==2) //事件值为2表示接收缓冲区内有字符
{////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_CMscomm.get_Input(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;klen;k++) safearray_inp.GetElement(k,rxdata+k);//转换为BYTE型数组
for(k=0;klen;k++) //将数组转换为Cstring型变量
{ BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
m_send+=strtemp; //加入接收编辑框对应字符串
}
}
UpdateData(FALSE);
}
void C串口Dlg::OnBnClickedButton2()
{
UpdateData();
m_CMscomm.put_Output((COleVariant) m_send);
SetWindowLong(m_hWnd,GWL_EXSTYLE,GetWindowLong(m_hWnd,GWL_EXSTYLE) | WS_EX_ACCEPTFILES);
}
void C串口Dlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
MessageBox("sfsfe");
CDialogEx::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
急?。。〉テ鶦语言实现串口通信编程以下是我刚改的程序编译成功了
请参考
#include"reg51.h"
//定义全局变量
unsigned char data_10[10]={0,0,0,0,0,0,0,0,0,0};
unsigned char Time_50ms,count;
bit flag=0;
bit data_flag=0;
/*********************************************************************************************

推荐阅读