串口上位机程序编写

借助开源文件:Com_class.h

程序实例:http://pan.baidu.com/s/1qWHUQmS

 

使用步骤:  1.包含Com_class.h头文件   

                2.

#include "Com_class.h"
class CComDlgDlg : public CDialog
{
// Construction
public:
	LRESULT On_Receive(WPARAM wp, LPARAM lp);
	_thread_com com2;
	CComDlgDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CComDlgDlg)
	enum { IDD = IDD_COMDLG_DIALOG };
	CString	m_e;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CComDlgDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	//{{AFX_MSG(CComDlgDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	virtual void OnOK();
	afx_msg void OnButton1();
	afx_msg void OnButton2();
	afx_msg void OnButton3();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_COMDLGDLG_H__75BDFED3_C096_4C40_AB56_E631ECD7434D__INCLUDED_)

  3.添加消息映射

BEGIN_MESSAGE_MAP(CComDlgDlg, CDialog)
    //{{AFX_MSG_MAP(CComDlgDlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
    ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
    ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
    //}}AFX_MSG_MAP
    ON_MESSAGE(ON_COM_RECEIVE, On_Receive)
END_MESSAGE_MAP()

4.添加重载函数

LRESULT CComDlgDlg::On_Receive(WPARAM wp, LPARAM lp)
{
    int len;
    char str[100];
    len = com2.read(str, 100);
    if(len > 0)
    {
        char com_str[10];
        strcpy(com_str, "COM");
        ltoa((long)wp, com_str + 3, 10); //    WPARAM 保存端口号
        m_e += com_str;
        m_e += " : ";
        m_e += str;
        m_e += "\r\n";
        UpdateData(false);
    }
    
    return 0;
}

5.打开串口

void CComDlgDlg::OnButton1() 
{
    if(!com2.open(5))//默认是9600 调用不同的OPEN可以调节波特率
        MessageBox("open fail", "COM5", MB_OK);
    else
        com2.set_hwnd(m_hWnd);
    
}

6.发送数据

void CComDlgDlg::OnButton3() 
{
    char  buff[100];
    // TODO: Add your control notification handler code here
//    com2<<1;
    buff[0]=0x55;
    com2.write(buff,1);
}

7.关闭串口

void CComDlgDlg::OnButton2() 
{
    com2.close();
}

 

转载于:https://www.cnblogs.com/yuqilihualuo/p/4519347.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值