云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 纯业余者用VC(MFC)编写串口调试助手(含VC6工程源文件)

纯业余者用VC(MFC)编写串口调试助手(含VC6工程源文件)

  • 62 次阅读
  • 3 次下载
  • 2025/7/13 12:05:12

//===============函数结束===========================

char ConvertHexChar(char ch) { //将一个字符转换为相应的十六进制 if ((ch >= '0') && (ch <= '9')) return ch - 48;//0x30; else if ((ch >= 'A') && (ch <= 'F')) return ch - 'A' + 10; else if ((ch >= 'a') && (ch <= 'f')) return ch - 'a' + 10; else return (-1); }

//=================16进制转字符串显示===================== //16进制转字符串显示的函数

//传入参数Data为16进制的字符串 //函数返回为CString的结果sResult

CString DisplayHex2CString(CString Data) { CString sResult; CString sTemp; int Data_Length; Data_Length = Data.GetLength(); if (Data_Length == 0) return \ char *pchar = new char[Data_Length]; //用了new分配内存空间,要记得释放 strncpy(pchar,Data,Data_Length); for(int i=0; i

//===============函数结束=============================

comm.h编写如下: #ifndef comm_H #define comm_H

第 21 页 共 39 页

#define WM_FOUNDCOMM WM_USER + 1 //自定义消息WM_FOUNDCOMM,收到该消息表示串口已经找到

#define WM_READCOMM WM_USER + 2 //自定义消息WM_READCOMM,收到该消息缓冲区有数据,可以读取 extern void FindComm(); //申明为外部函数 extern void OpenComm(int nBaud, int nData, int nStop, int nCal); extern void CloseComm();

extern UINT ThreadFunc(LPVOID pParam); //申明全局线程处理函数 extern CString DisplayCString2Hex(CString Data, bool Blank_allow); extern CString DisplayHex2CString(CString Data);

extern int ConvertHexC2String(CString str, CByteArray &senddata); extern bool ComIsOK; //申明为外部变量 extern HANDLE hCom; extern CString strcomname;

#endif

在commassistDlg.h中包含MyButton.h文件 在#endif // _MSC_VER > 1000后加入 #include \

在// Construction后加入变量及函数 CWinThread* pReceiveThread; void ShowStatus(); int m_intTxCnt; int m_intRxCnt; BOOL m_bAutoSend; DWORD ReadComm();

在commassistDlg.cpp中 加入头文件comm.h #include \加入全局变量 CString strIn; CString strOut; CString m_strFile;

变量初始化如

///////////////////////////////////////////////////////////////////////////// // CCommassistDlg dialog

第 22 页 共 39 页

CCommassistDlg::CCommassistDlg(CWnd* pParent /*=NULL*/) : CDialog(CCommassistDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCommassistDlg) m_strTimer = _T(\ m_strFilePath = _T(\ m_strOut = _T(\ m_strStatus = _T(\ m_check_hexrx = FALSE; m_check_hextx = FALSE; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); //下面就是自己添加的变量初始化 m_strTimer = \ m_strFilePath = \请选择要发送的文件\ m_intTxCnt = 0; m_intRxCnt = 0; m_bAutoSend = 0; strIn = \ strOut = \}

在OnInitDialog函数中添加代码如下 // TODO: Add extra initialization here m_comcontrol.SetForeColor(RGB(255,0,0)); FindComm(); //调用自动找串口函数 m_comlist.SetCurSel(0); //设置串口号下拉框默认值为第一个 m_baud.SetCurSel(6); //设置波特率下拉框默认值为9600 m_bdata.SetCurSel(3); //设置数据位下拉框默认值为8位 m_bstop.SetCurSel(0); //设置停止位下拉框默认值为1 m_cal.SetCurSel(0); //设置校验位下拉框默认值为None无 GetDlgItem(IDC_BTN_HANDSEND)->EnableWindow(false); //设置手动发送按钮不可用 GetDlgItem(IDC_BTN_AUTOSEND)->EnableWindow(false); //设置自动发送按钮不可用 GetDlgItem(IDC_EDIT_TIMER)->EnableWindow(false); //设置发送间隔按钮不可用 GetDlgItem(IDC_BTN_SELCTFILE)->EnableWindow(false); //设置选择文件按钮不可用 GetDlgItem(IDC_BTN_SENDFILE)->EnableWindow(false); //设置发送文件按钮不可用 ShowStatus(); //下面语句用于解决程序运行后初始化EDIT框内容被默认自动选中状态

第 23 页 共 39 页

//返回值需更改为FALSE GetFocus(); //获取焦点 SetFocus(); //设置焦点 m_CEditStatus.SetSel(-1,-1,FALSE); //设置 // PostMessage(EM_SETSEL,-1,0); return FALSE; // return TRUE unless you set the focus to a control

用ClassWizard添加WindowProc函数来处理自定义消息

函数内容如下:

//=====================消息处理函数=========================== //功能:处理自定义消息=========================================

LRESULT CCommassistDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class switch(message) { case WM_FOUNDCOMM : //已找到串口,串口号以字符串形式由wParam传递 m_comlist.AddString((LPCTSTR)wParam); //用AddString添加一个字符串即COM号到m_comlist列表框中 break; case WM_READCOMM : //读串口消息 ReadComm(); break; } return CDialog::WindowProc(message, wParam, lParam); }

第 24 页 共 39 页

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

//===============函数结束=========================== char ConvertHexChar(char ch) { //将一个字符转换为相应的十六进制 if ((ch >= '0') && (ch = 'A') && (ch = 'a') && (ch <= 'f')) return ch - 'a' + 10; else return (-1); } //=================16进制转字符串显示===================== //16进制转字符串显示的函数 //

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com