欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 口号 > c添加串口号

c添加串口号

时间:2017-10-05 09:46

求C++ C语言大神帮忙弄一个串口通信的代码

这是我以前写的一个串口通讯文件,全部贴出来了,希望对你有帮助,包括设置,发送,接受数据,你可以好好看看,祝你成功\\\/\\\/ 串口Dlg.cpp : 实现文件\\\/\\\/#include stdafx.h#include 串口.h#include 串口Dlg.h#include afxdialogex.h#ifdef _DEBUG#define new DEBUG_NEW#endif\\\/\\\/ 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx{public: CAboutDlg();\\\/\\\/ 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); \\\/\\\/ DDX\\\/DDV 支持\\\/\\\/ 实现protected: DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){ CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()\\\/\\\/ C串口Dlg 对话框C串口Dlg::C串口Dlg(CWnd* pParent \\\/*=NULL*\\\/) : CDialogEx(C串口Dlg::IDD, pParent) , m_Selection(0) , m_recv(_T()) , m_send(_T()){ m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void C串口Dlg::DoDataExchange(CDataExchange* pDX){ CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_MSCOMM1, m_CMscomm); DDX_Control(pDX, IDC_COMBO2, m_CComboBox); DDX_Text(pDX, IDC_RECV, m_recv); DDX_Text(pDX, IDC_SEND, m_send);}BEGIN_MESSAGE_MAP(C串口Dlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, &C串口Dlg::OnBnClickedButton1) ON_CBN_SELCHANGE(IDC_COMBO2, &C串口Dlg::OnSelchangeCombo2) ON_WM_LBUTTONDBLCLK() ON_BN_CLICKED(IDC_BUTTON2, &C串口Dlg::OnBnClickedButton2) ON_WM_DRAWITEM()END_MESSAGE_MAP()\\\/\\\/ C串口Dlg 消息处理程序BOOL C串口Dlg::OnInitDialog(){ CDialogEx::OnInitDialog(); \\\/\\\/ 将“关于...”菜单项添加到系统菜单中。

\\\/\\\/ IDM_ABOUTBOX 必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } \\\/\\\/ 设置此对话框的图标。

当应用程序主窗口不是对话框时,框架将自动 \\\/\\\/ 执行此操作 SetIcon(m_hIcon, TRUE); \\\/\\\/ 设置大图标 SetIcon(m_hIcon, FALSE); \\\/\\\/ 设置小图标 \\\/\\\/ TODO: 在此添加额外的初始化代码 m_CMscomm.put_CommPort(2); if(m_CMscomm.get_PortOpen()) m_CMscomm.put_PortOpen(0);\\\/\\\/解除占用 m_CMscomm.put_PortOpen(1);\\\/\\\/打开串口 static CString str(9600,n,8,1); m_CMscomm.get_Input(); m_CMscomm.put_RThreshold(1); m_CMscomm.put_Settings(str); static char ch[10]; CString str1(com); for(int i=1;i<10;i++) { itoa(i,ch,10); m_CComboBox.AddString(str1+ch); } m_CComboBox.SetCurSel(0); return TRUE; \\\/\\\/ 除非将焦点设置到控件,否则返回 TRUE}void C串口Dlg::OnSysCommand(UINT nID, LPARAM lParam){ if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); }}\\\/\\\/ 如果向对话框添加最小化按钮,则需要下面的代码\\\/\\\/ 来绘制该图标。

对于使用文档\\\/视图模型的 MFC 应用程序,\\\/\\\/ 这将由框架自动完成。

void C串口Dlg::OnPaint(){ if (IsIconic()) { CPaintDC dc(this); \\\/\\\/ 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); \\\/\\\/ 使图标在工作区矩形中居中 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_cast(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;k

VC添加串口控件是为什么提示没有注册类,我按着注册步骤做了啊

或许 你的 系统里根本就没有 这个 串口控件是 ocx 文件C:\\\\Windows\\\\System32\\\\Mscomm32.ocx

C语言串口问题

看你驱动程序的接口啊一般是是open(“串口名”)得到一个int小整数,作为接口函数的参数,表示这个串口然后read(),write()操作结束后不要忘记close()下面的实现就是驱动的实现了一般结合硬件也要自己去实现的

串口怎么与I2C连接?

分接收端和发送端。

接收端:1·打开com1端口 fd=fopen(\\\/dev\\\/ttys0,方式);2·取得当前串口值,保存到结构体变量oldtio tcgetattr(fd,&oldtio);3·串口结构体变量newtio清0.bzero(&newtio,sizeof(newtio))4·设置串口参数 主要设置比特率、是否忽略奇偶校验错误,启用正规模式等等。

接收端1·打开com端口2·取得当前串口值3·串口结构体变量清04·设置串口参数。

C ++串口通信

跟普通文件的操作或数据库的操作一样的。

如果串口数据并非都是文本内容,那么存储时应该用二进制方式。

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片