当前位置:文档之家› VC6.0MFC串口调试助手编辑过程介绍

VC6.0MFC串口调试助手编辑过程介绍

VC6.0MFC串口调试助手编辑过程介绍
VC6.0MFC串口调试助手编辑过程介绍

其于MFC 的串口调试助手编辑过程

一、新建

打开

VC6.0 文件 新建 工程 MFC AppWiard(exe)

位置(选择保存工程位置) 工程名称(输入工程名XXXX )

确定 选择基本对话框 下一步 下一步 下一步 选择(CXXXXDlg ) 完成 确定 在生成的基本对话框内将不需要按钮及提示框(自动生成的“确定”“取消” 及提示框)删除或修改使用,至此基本框架完成如下图:

二、往生成的基本框架中添加控件

1、因为控件列表框内没有串口通信用到的通信控件,所以要先添加到控件列表框内再将控件添加到基本框内使用,步骤如下:

菜单栏 工程 添加到工程 Components and controls … Registered ActiveX Controls 选择“Microsoft Communications Control, version 6.0” Insert 确定 OK 关闭此子窗口完成添加操作标志如上图所示。 2、将刚才添加添加到控件列表框内的串口控件添加到基本框架内 点击控件列表框内的串口控件,此时光标变为“十”形,在基本框架内随意划取一矩

形区域,即可以添加串口控件,不需要修改此控件的大小及位置,因为程编译运行后此控件是看不到的,步骤结果如下图:

3、继续往基本框架内添加用于编辑发送数据的输入编辑框及输出编辑框,同理选择控件列表框内的“编辑框控件”,以相同的操作即可添加两个编辑窗口及一个按纽控件如下图所示:

这两个窗口需要修改大小及位置,因为程序运行后将会显示而串口通信控件则不显示,上图是运行后的效果。

4、对以上四个控件编程步骤如下:

a 、右击串口通信控件 建立类向导

Member variables Control IDS 中选择IDC_MSCOMM1 add variable … Member variable name 中输入控件变量名m_ctrlComm (变量名可以随意选取,但程序中应与所取变量名一致) OK 确定

b、右击编辑框、属性、常规、ID:中输入ID号,此编辑框用于接收显示数据的其ID 号为IDC_EDIT_RXDATA(可以随意选取,但程序中应与所取ID号一致),再在此窗口的样式中勾选”多行”,同时将“自动水平滚动(T)”勾选去掉,再勾选“垂直滚动(V)”,此勾选操作是用于垂直多行显示的,按回车后即可输入;同理右击另一编辑框输入ID号为IDC_EDIT_TXDATA此编辑框用于编辑发送数据的,同样也选上用于垂直多行显示,发送框可以不用垂直多行显示;再为按钮控件添加ID号,为IDC_BUTTON_MANUALSEND,并将标题中的“Button1”改为“发送”,功能是按一次就把发送编辑框中的内容发送一次。

C、为以上两个编辑框添加变量,与串口通信控件一样添加,为IDC_EDIT_RXDATA添加CString型变量m_strRXData ;为IDC_EDIT_TXDATA添加CString型变量m_strTXData。说明:m_strRXData和m_strTXData分别用来放入接收和发送的字符数据。

D、添加串口事件消息处理函数OnComm() 打开ClassWizard->Message Maps,选择IDC_MSCOMM1,双击消息OnComm,将弹出的对话框中将函数名改为OnComm,(好记而已)OK。

这个函数是用来处理串口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在OnComm()函数加入相应的处理代码就能实现自已想要的功能了。在函数中加入如下代码:

代码段1:

void CScommTestDlg::OnComm()

{

// TODO: Add your control notification handler code here

V ARIANT variant_inp;//定义一个V ARIANT类对象

COleSafeArray safearray_inp;//定义一个COleSafeArray对象

LONG len,k;

BYTE rxdata[2048];//设置BYTE数组AN 8—intterthat is not signed.

CString strtemp;

if (m_ctrlComm.GetCommEvent()==2)//事件值为2表示接收缓冲区内有数据

{

////以下你可以根据自己的通信协议加入处理代码

variant_inp=m_ctrlComm.GetInput();//读缓冲区

safearray_inp=variant_inp;//V ARIANT型变量转换为ColeSafeArray型变量

len=safearray_inp.GetOneDimSize();

for(k=0;k

{

safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组}

将数组转换为Cstring型变量

BYTE bt=*(char*)(rxdata+k);

如果是HEX显示则转为16进制strtemp.Format("%02x ",bt); //将16进制数送入临时变量strtemp存放else

strtemp.Format("%c",bt);//将字符送入临时变量strtemp 存放 m_strRXData+=strtemp;//加入接收编辑框对应字符串 } }

UpdateData(FALSE);//更新编辑框内容(主要是接收编辑框中的) }

到目前为止还不能在接收编辑框中看到数据,因为我们还没有打开串口,但运行程序不应该有任何错误,不然,你肯定哪儿没看仔细,因为我是打开VC6对照着做一步写一行的,运行试试。没错吧?那么做下一步:

E 、打开串口和设置串口参数 你可以在你需要的时候打开串口,例如在程序中做一个开始按钮,在该按钮的处理函数中打开串口。现在我们在主对话框的CSCommTestDlg::OnInitDialog()打开串口,加入如下代码:

代码段2:

BOOL CSCommTestDlg::OnInitDialog() {

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) {

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING , IDM_ABOUTBOX, strAboutMenu); } }

// Set the icon for this dialog.

//

SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE);

// m_ComboBox.SetCurSel(0);//打开软件时串口选择框默认显示COM1

m_BaudRate_M.SetCurSel(0);//打开软件时波特率选择框默认显示9600 m_Date_Select_M.SetCurSel(0);//打开软件时数据位选择框默认显示8 // m_StopBit_M.SetCurSel(0);//打开软件时停止位选择框默认显示1

// m_ParityCheck_M.SetCurSel(0);//打开软件时奇偶校验选择框默认显示无校验N

//下面if语句用于打开默认串口

/************************************************************/

if(m_ctrlComm.GetPortOpen())

{

m_ctrlComm.SetPortOpen(FALSE);//关闭串口

}

m_ctrlComm.SetCommPort(1);//打开软件时默认使用COM1串口

if(!m_ctrlComm.GetPortOpen())

{

m_ctrlComm.SetPortOpen(TRUE);//打开串口

}

else

{

AfxMessageBox("cannot open serial port");

}

/*************************************************************/

m_ctrlComm.SetSettings("9600,n,8,1");//打开软件时端口设置默认为波特率9600,无校验位,8位数据,1位停止位

m_ctrlComm.SetInputMode(1); //1:表示以二进制方式检取数据

m_ctrlComm.SetRThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件

m_ctrlComm.SetInputLen(0); //设置当前接收区数据长度为0

m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据

return TRUE; // return TRUE unless you set the focus to a control

}

F、发送数据,先为发送按钮添加一个单击消息即BN_CLICKED处理函数,打开ClassWizard->Message Maps,选择IDC_BUTTON_MANUALSEND,双击BN_CLICKED 添加OnButtonManualsend()函数,并在函数中添加如下代码:

代码段3:

void CSCommTestDlg::OnButtonManualsend()

{

// TODO: Add your control notification handler code here

UpdateData(TRUE); //读取编辑框内容

m_ctrlComm.SetOutput(COleVariant(m_strTXData));//发送数据

}

此时运行程序,在发送编辑框中随意输入数,单击发送按钮,若出错则修改后再测试,直到成功再进行以下操作。

5、添加两个“组框”或“静态文本”控件,调整位置及大小,在标师处输入提示文字,这两个控件不用编程,效果如下图:

6、添加5个“静态文本”控件并由属性修改其标题,均不用编程,效果如下图:

7、添加5个“组框”控件,效果如下图:

逐一对各个组框属性编辑如下:

串口号:

常规ID:IDC_COMBO_CommSelect

数据输入列表框项目(N):COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9(注意每输入一个数据选项以Ctrl+Enter回车后再输入下一个数据选项)

样式将“分类勾选去掉”

进入类向导添加变量,为IDC_COMBO_CommSelect添加一个value类int型变量m_Index,点击OK后,再添加一个Control类CComboBox型变量m_ComboBox点击OK最后“确定”

波特率:

常规ID:IDC_COMBO_BaudRate_Select

数据输入列表框项目(N):9600、14400、19200、38400、56000、57600、115200、128000、256000

样式将“分类勾选去掉”

进入类向导添加变量,为IDC_COMBO_BaudRate_Select添加一个value类int型变量m_ BaudRate点击OK后,再添加一个Control类CComboBox型变量m_ BaudRate_M 点击OK最后“确定”

数据位:

常规ID:IDC_COMBO_Date_Select

数据输入列表框项目(N):8、7、6、5、4

样式将“分类勾选去掉”

进入类向导添加变量,为IDC_COMBO_Date_Select添加一个value类int型变量m_Date_Select点击OK后,再添加一个Control类CComboBox型变量m_Date_Select _M点击OK最后“确定”

停止位:

常规ID:IDC_COMBO_StopBit

数据输入列表框项目(N):1、2

样式将“分类勾选去掉”

进入类向导添加变量,为IDC_COMBO_StopBit添加一个value类int型变量

m_StopBit点击OK后,再添加一个Control类CComboBox型变量m_StopBit_M点击

OK最后“确定”

奇偶校验位:

常规ID:IDC_COMBO_ParityCheck

数据输入列表框项目(N):N、O、E、

样式将“分类勾选去掉”

进入类向导添加变量,为IDC_COMBO_ParityCheck添加一个value类int型变量

m_ParityCheck点击OK后,再添加一个Control类CComboBox型变量

m_ParityCheck_M点击OK最后“确定”

说明:以上数据配置添加的Control类CComboBox型变量可能用不到,但value类必须为int型

8、为各个列表框添加处理函数:

A、在建立类向导中Message Maps ,object IDs中选中IDC_COMBO_CommSelect再

在Messages中选中CBN_SELCHANG双击后单击OK,再在Member funtions中双击刚才生成的函数进入程序编辑页面,添加程序代码如下:

代码段4:

void CSCommTestDlg::OnSelchangeCOMBOCommSelect()

{

// TODO: Add your control notification handler code here

m_Index=((CComboBox*)GetDlgItem(IDC_COMBO_CommSelect))->GetCurSel();//当前选中的行

((CComboBox*)GetDlgItem(IDC_COMBO_CommSelect))->SetCurSel(m_Index);//设置当前选中的行的内容为显示的内容

if(m_ctrlComm.GetPortOpen())//当要改变时则要先关闭串口才可以用按键进行打开,

先判断当前串口是否打开

{//如果是打开的则先关闭

m_ctrlComm.SetPortOpen(FALSE);//关闭串口

}

SetDlgItemText(IDC_BUTTON1,"打开串口");//将打开或关才按钮改为"打开串口"

}

B、同理为IDC_COMBO_BaudRate_Select添加处理函数程序代码如下:

代码段5:

void CSCommTestDlg::OnSelchangeCOMBOBaudRateSelect()

{

// TODO: Add your control notification handler code here

UpdateData(true);

m_BaudRate=((CComboBox*)GetDlgItem(IDC_COMBO_BaudRate_Select))->GetCurSel();/

/当前选中的行

////***********************************************************/

///根据当前选中的值进行波特率设置

///************************************************************/

switch(m_BaudRate)

{

case 1: m_ctrlComm.SetSettings("14400,,,");

break;

case 2: m_ctrlComm.SetSettings("19200,,,");

break;

case 3: m_ctrlComm.SetSettings("38400,,,");

break;

case 4: m_ctrlComm.SetSettings("56000,,,");

break;

case 5: m_ctrlComm.SetSettings("57600,,,");

break;

case 6: m_ctrlComm.SetSettings("115200,,,");

break;

case 7: m_ctrlComm.SetSettings("128000,,,");

break;

case 8: m_ctrlComm.SetSettings("256000,,,");

break;

default:m_ctrlComm.SetSettings("9600,,,");

break;

}

//*************************************************////

UpdateData(false);

}

C、同理为IDC_COMBO_Date_Select添加处理函数程序代码如下:

代码段6:

void CSCommTestDlg::OnSelchangeCOMBODateSelect()

{

// TODO: Add your control notification handler code here

UpdateData(true);

m_Date_Select=((CComboBox*)GetDlgItem(IDC_COMBO_Date_Select))->GetCurSel() ;//当前选中的行

///*************************************************************************** ****/

///*************************************************************************** *****/

switch(m_Date_Select)

{

case 1: m_ctrlComm.SetSettings(",,7,");

break;

case 2: m_ctrlComm.SetSettings(",,6,");

break;

case 3: m_ctrlComm.SetSettings(",,5,");

break;

case 4: m_ctrlComm.SetSettings(",,4,");

break;

default:m_ctrlComm.SetSettings(",,8,");

break;

}

//*************************************************************************** ******//

UpdateData(false);

}

D、同理为IDC_COMBO_StopBit添加处理函数程序代码如下:

代码段6:

void CSCommTestDlg::OnSelchangeCOMBOStopBit()

{

// TODO: Add your control notification handler code here

UpdateData(true);

m_StopBit=((CComboBox*)GetDlgItem(IDC_COMBO_StopBit))->GetCurSel();//当前选中的行

///*************************************************************************** ****/

///*************************************************************************** *****/

switch(m_StopBit)

{

case 1: m_ctrlComm.SetSettings(",,,2");

break;

default:m_ctrlComm.SetSettings(",,,1");

break;

}

//*************************************************************************** ******//

UpdateData(false);

}

E、同理为IDC_COMBO_ParityCheck添加处理函数程序代码如下:

代码段7:

void CSCommTestDlg::OnSelchangeCOMBOParityCheck()

{

// TODO: Add your control notification handler code here

UpdateData(true);

m_ParityCheck=((CComboBox*)GetDlgItem(IDC_COMBO_ParityCheck))->GetCurSel();//当前选中的行

///*************************************************************************** ****/

///*************************************************************************** *****/

switch(m_ParityCheck)

{

case 1: m_ctrlComm.SetSettings(",O,,");

break;

case 2: m_ctrlComm.SetSettings(",O,,");

break;

default:m_ctrlComm.SetSettings(",N,,");

break;

}

//*************************************************************************** ******//

UpdateData(false);

}

此时应将代码段2:提示4中所指的那5个语句前的“//”删除

9、串口添加打开或关闭按钮

以同样的方式添加按钮,并将标题修改为“关闭串口”字样,为此按钮添加处理函数程序代码如下:

代码段8:

void CSCommTestDlg::OnButton1Start()

{

//检查是否改变默认的串口值,没有改变m_Index的值是0的,否则则不为0

if(m_Index<0)//串口的默认值没有改变

{

switch(m_ctrlComm.GetPortOpen())//点击打开或关闭串口按键时,根据当前串口是否打开进行相应操作

{

case 1: /**************************************************************

关闭串口前先将自动发送功能关闭

***************************************************************/

SetDlgItemText(IDC_BUTTON_AutoSend,"自动发送");//更改按键指示

KillTimer(1);

/**************************************************************/

//当前串口是打开的则进行关串口操作

m_ctrlComm.SetPortOpen(FALSE);//关闭串口

SetDlgItemText(IDC_BUTTON1,"打开串口");//更改按键指示

UpdateData(FALSE);//更新按键状态

break;

case 0://当前串口是关闭的则进行开串口操作

m_ctrlComm.SetCommPort(1);//如果要打开串口则应先选择哪个串口

m_ctrlComm.SetPortOpen(TRUE);//打开串口

SetDlgItemText(IDC_BUTTON1,"关闭串口");//更改按键指示

UpdateData(FALSE);

break;

default : AfxMessageBox("cannot open or close serial port");

}

}

else//串口的默认值有改变

{

switch(m_ctrlComm.GetPortOpen())//点击打开或关闭串口按键时,根据当前串口是否打开进行相应操作

{

case 0://当前串口是关闭的则进行开串口操作

m_ctrlComm.SetCommPort(m_Index+1);//如果要打开串口则应先选择哪个串口

m_ctrlComm.SetPortOpen(TRUE);//打开串口

SetDlgItemText(IDC_BUTTON1,"关闭串口");//更改按键指示

UpdateData(FALSE);//更新按键状态

break;

case 1: /************************************************************** 关闭串口前先将自动发送功能关闭

***************************************************************/

SetDlgItemText(IDC_BUTTON_AutoSend,"自动发送");//更改按键指示

KillTimer(1);

/**************************************************************/

//当前串口是打开的则进行关串口操作

m_ctrlComm.SetPortOpen(FALSE);

SetDlgItemText(IDC_BUTTON1,"打开串口");

UpdateData(FALSE);

break;

default : AfxMessageBox("cannot open serial port");

}

}

if(m_Index<0)

((CComboBox*)GetDlgItem(IDC_COMBO_CommSelect))->SetCurSel(0);//如果没有另外进行串口选择则显示COM1

if(m_BaudRate<0)

((CComboBox*)GetDlgItem(IDC_COMBO_BaudRate_Select))->SetCurSel(0);//如果没有另外进行波特率选择则显示9600

if(m_Date_Select<0)

((CComboBox*)GetDlgItem(IDC_COMBO_Date_Select))->SetCurSel(0);////如果没有另外进行数据位选择则显示8

if(m_StopBit<0)

((CComboBox*)GetDlgItem(IDC_COMBO_StopBit))->SetCurSel(0);//如果没有另外进行停止位选择则显示1

if(m_ParityCheck<0)

((CComboBox*)GetDlgItem(IDC_COMBO_ParityCheck))->SetCurSel(0);//如果没有另外进行校验位选择则显示没有校验位N

}

10、添加自动发送功能:

A、添加一个“编辑框”控件,此控件用于获取自动发送的时间间隔的,修改其ID 为IDC_EDIT_Timer,为其添加一个value类UINT型变量m_Timer

B、添加一个“按钮”控件,修改其ID为IDC_BUTTON_AutoSend修改其标题为“自动发送”

C、添加一个“按钮”控件,修改其ID为IDC_BUTTON_StopAutoSend修改其标题为“停止自动发送”

D、为“自动发送”按钮添加BN_CLICKED处理函数,程序代码如下:

代码段9:

void CSCommTestDlg::OnBUTTONAutoSend()

{

UpdateData(TRUE);

if(m_Timer<=0)//判断是否设置自动发送时间间隔

AfxMessageBox("请设置自动发送时间间隔");

else if(!m_ctrlComm.GetPortOpen())//判断是否打开串口

AfxMessageBox("请打开串口");

else

{SetDlgItemText(IDC_BUTTON_AutoSend,"自动发送...");//更改按键指示

SetTimer(1,m_Timer,NULL);}

}

E、为“停止自动发送”按钮添加BN_CLICKED处理函数,程序代码如下:

代码段9:

void CSCommTestDlg::OnBUTTONStopAutoSend()

{

// TODO: Add your control notification handler code here

SetDlgItemText(IDC_BUTTON_AutoSend,"自动发送");//更改按键指示

KillTimer(1);

}

F、因为要设置自发送,所以要添加一个Windows定时函数,步骤如下:

进入类向导,Message Maps中的Object IDs中选择CScommTestDlg再选择Messages中的WM_TIMER,进入TIMER函数后,添加如下程序代码如下:

代码段10:

void CSCommTestDlg::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default

UpdateData(TRUE);

if(m_ctrlHexSend.GetCheck())

{

CByteArray hexdate;

int len=String2Hex(m_strTXData,hexdate);

m_ctrlComm.SetOutput(COleVariant(hexdate));

}

else

m_ctrlComm.SetOutput(COleVariant(m_strTXData));

CDialog::OnTimer(nIDEvent);

}

11、十六进制数据发送及接收显示

添加一个“复选框”控件,修改ID为IDC_CHECK_HexSend,标题为“HEX发送”,进入类向导添加control类CButton型变量,变量名为m_ctrlHexSend,然后为为

SCommTestDlg类添加以下两个PUBLIC成员函数,在Class view中右击

CCommTestDlg选中Add Member Function…然后在函数类型中输入“int”,在

函数描述中输入“String2Hex(CString str, CByteArray &senddate)”然后确定。编

辑函数体如下:

代码段11:

int CSCommTestDlg::String2Hex(CString str, CByteArray &senddate)

{

int hexdate,lowhexdate;

int hexdatelen=0;

int len=str.GetLength();

senddate.SetSize(len/2);

for(int i=0;i

{

char lstr,hstr=str[i];

if(hstr==' ')

{

i++;

continue;

}

i++;

if(i>=len)

break;

lstr=str[i];

hexdate=ConvertHexChar(hstr);

lowhexdate=ConvertHexChar(lstr);

if((hexdate==16)||(lowhexdate==16))

break;

else

hexdate=hexdate*16+lowhexdate;

i++;

senddate[hexdatelen]=(char)hexdate;

hexdatelen++;

}

senddate.SetSize(hexdatelen);

return hexdatelen;

}

再添加别一个CCommTestDlg添加两个成员函数,在函数类型中输入“char”,在函数描述中输入“ConvertHexChar(char ch)”然后确定。编辑函数体如下:

代码段12:

char CSCommTestDlg::ConvertHexChar(char ch)

{

if((ch>='0')&&(ch<='9'))

{

return ch-0x30;

}

else if((ch>='A')&&(ch<='F'))

{

return ch-'A'+10;

}

else if((ch>='a')&&(ch<='f'))

{

return ch-'a'+10;

}

else

return (-1);

}

再将CSCommTestDlg::OnButtonManualsend()修改成以下形式:

代码段13:

void CSCommTestDlg::OnButtonManualsend()

{

// TODO: Add your control notification handler code here

if(!m_ctrlComm.GetPortOpen())//判断是否打开串口

AfxMessageBox("请打开串口");

else

{

UpdateData(TRUE);

if(m_ctrlHexSend.GetCheck())//判断是否是自动发送

{

CByteArray hexdate;

int len=String2Hex(m_strTXData,hexdate);

m_ctrlComm.SetOutput(COleVariant(hexdate));

}

else

m_ctrlComm.SetOutput(COleVariant(m_strTXData));

}

}

在接收框中以十六进制显示

将代码段1,提示2的三句程序代码前的“//”去掉即可。

至此,基本功能已完成,编译运行程序是否能实现各功能,如果出错,则细仔改正,再通过添加“组合框”控件或“静态文本”可以添加相应提示,再由菜单栏中的布局内的各种功能选择可以实现将各控件整齐排列效果如下:

12、保存数据功能

添加一个按钮控件,ID为IDC_BUTTON_SaveData,标题为:保存数据,添加两个“复选框”控件,一个ID为IDC_CHECK_HEXSave,标题为:HEX保存,另一个ID为IDC_CHECK_BCDSave,标题为:BCD保存,选择HEX保存则保存的数据为十六进制数据,选择BCD保存则保存的数据为十进制数据,但不可两都同时选择,再为两个复选框选添加两个control类CButton型变量,一个变量名为:m_HEXSave,另一个为m_BCDSave;为“保存数据”按钮添加一个BN_CLICKED 函数;另外再为为SCommTestDlg类添加以下两个PUBLIC成员函数,此函数只要用于十六进制与十进制数据之间的转换,函数类型为CString,函数描述为HEX_To_BCD(CString HexData),函数体如下:

代码段13:

再为“保存数据”按钮添,的BN_CLICKED函数添加函数体,代码如下:

代码段14:

13:清除数据:

添加一个“清除数据”按钮控件,ID为IDC_BUTTON_CleanRXData,标题为:清空数据区,添加一个BN_CLICKED函数,函数体代码如下:

代码段14:

void CSCommTestDlg::OnBUTTONCleanRXData()

{

// TODO: Add your control notification handler code here

m_strRXData.Empty();

UpdateData(FALSE);

}

至此其串口调试助手其本功能已全部实现,编译程序运行后效果如下:

串口调试助手设计思路与手册

(2016-11-21)本设计包含的函数模块有: 1.打开/关闭串口和设置串口参数 2.软件退出 3.获取串口参数 4.发送数据 5.接受数据 6.清空发送区 7.清空接收区 8.计数清零 9.暂停/开启接收数据 10.自动发送 11.发送周期设置 12.打开文件 13.保存数据 补充说明: 1.设置串口参数里面包括了1)获取串口可用串口。2)波特率下拉参数设置。3)校验位下 拉参数设置。4)数据位下拉参数设置。5)默认设置。6) 2.发送数据前先判断是否为十六进制,是否为自动发送。是十六进制发送则把数据先转为 十六进制格式并获取数据长度,再把数据转到发送缓冲区发送,否则ASCII码文本发送3.接收数据函数在串口运行时一直在判断是否有新数据,并根据不同的接收模式,加显不 同格式的数据 软件代码详细介绍: (74-92h)可用串口检测及下拉控件。 (96-109h)波特率下拉控件设置。 (113-121h)校验位下拉控件。 (125-131h)数据位下拉控件。 (135-141h)停止位下拉控件。 (145-155h)默认参数设置。 (159-162h)接收数据串口说明与启动。 (168-174h)关闭软件设置。 (176-180h)关闭窗口后先关闭线程再关闭进程。 (182-194h)定义串口各参数。 (197-281h)打开串口按钮回调函数,先判断是否有可用串口,没有则显示“无可用串口,无法打开”然后返回,有则继续判断当前是要打开串口还是关闭串口,若是需要打开串口则尝试设置串口参数并打开串口,打开串口失败会提示无法打开串口,打开串口成功则串口参数下拉控件变灰发送数据按钮点亮,判断自动发送控件如果被选中则打开串口后直接自动发送数据。如果之前判断按钮回调是关闭串口,则进行关闭串口并配置相关参数。 (282-347h)CRC16查表法校验函数。 (349-357h)发送数据按钮回调及自动发送按钮回调。 (358-369h)发送数据线程配置。 (371-510h)发送数据函数,先判断是否正在发送数据,如不在发送则设置当前正在发送状态,后继续判断是写序列号模式还是串口调试模式,串口调试模式时先定义发送缓冲区和

串口调试助手使用方法

串口调试助手使用方法 你可以试试串口监控器,一个功能强大,非常易用的软件。 串口监控器是一个免费的多功能串口通讯监控软件,它能够多种方式显示,接收,分析通讯数据;能够以多种灵活方式发送数据;功能强大,操作简便,在串口通讯监控,设备通讯测试中,能够有效提高工作效率。 主要功能如下: 接收数据: 1. 以十六进制方式显示接收到的数据。 2. 以字符方式显示接收到的数据。 3. 数据帧自动识别,分行显示。 4. 接收数据自动换行设置。 5. 显示或隐藏数据帧的接收时间。 6. 自动清除,自动保存接收到的数据。 7. 接收数据个数计数。 发送数据: 1. 十六进制方式发送数据。 2. 字符串方式发送数据。 3. 发送“发报窗口”当前光标行的数据帧。 4. 循环发送“发报窗口”当前光标行的数据帧。 5. 循环发送“发报窗口”固定行的数据帧。 6. 循环依次发送“发报窗口”的多行数据帧。(设置起始行,行数) 7. 触发发送,接收到“发报窗口”某一行数据,触发发送“发报窗口”另一行数据。 8. 发送数据个数计数。 实用增强功能: 1. 强大易用的进制转换功能。 2. 智能识别当前光标处数据帧的行号,“字符”或“十六进制数”的个数。 3. 智能计算当前选择的“字符”或“十六进制数”的个数。 4. 强大的数据查找功能。 5. 定时保存,定时清除数据。 6. 根据自己的喜好,灵活变换操作界面。

应用场合: 1. 截取和分析设备之间通讯数据流。 2. 串行外围设备硬件开发。 3. 串行设备驱动程序开发。 4. 调试和测试设备和设备之间的串行通讯过程。 5. 记录和分析RS232/422/485通信过程。 6. 模拟某设备通讯过程,对另外设备进行通讯测试。

串口调试助手毕业论文

1. 双击运行软件 如果出错,请先安装Microsoft .NET Framework 2.0,即微软.NET 2.0虚拟机。 第一次运行时,请先阅读使用协议,并单击“我同意”。如图1.1所示。 图1.1 第一次运行时请阅读使用协议,单击“我同意” 图1.2 JCBus串口调试助手的工作区域 随后,可以看到如图1.2所示的软件工作区域: 1.1标题栏:显示为“JCBus串口调试助手” 1.2菜单栏:包括“文件”、“帮助” 等菜单项目 1.3串口参数设置区:用于设置串口名称、波特率、校验位、数据位和停止位等 1.4调试结果解析区:用于解析调试过程中的数据,使数据在16进制、10进制等之间转换。 1.5调试区:分“消息应答”和“自动接收”两种调试方式。 A.“消息应答”:软件向设备发送一条消息后接收设备回应的信息;

B.“自动接收”:软件只负责接收设备发送的消息并在界面上显示出来。 两种方式可以通过点击“消息应答”或者“自动接收”标签页来切换。 1.6显示区:处于调试区的中间位置1.7调试操作区:记录“消息应答” 方式的详细调试操作 2设置串口参数 软件使用单串口调试设备,所以必须正确地设置串口参数。软件启动后将自动识别所有可用的串口,并打开第一个可用的串口,如图2.1所示。 图2.1 JCBus串口调试助手启动后,默认打开第一个可用的串口如果要使用另一个串口或者更改当前串口的设置,请先单击“关闭”按钮,软件将显示串口已经关闭,如图2.2所示。 图2.2 设置串口参数前,请先关闭已经打开的串口您可以设置的参数有: A.串口:软件自动识别所有可用的串口,您只需要在下拉框中选择即可; B.波特率:除了常规的2400、4800、9600、19200和38400以外,只要您的硬件允许,您还可以输入其他波特率; C.校验位:可以选择“无”、“奇校验位”、“偶校

串口调试助手VC++6.0程序

串口调试助手源程序 及编程详细过程 作者:龚建伟 2001.6.20 可以任意转载,但必须注明作者和说明来自https://www.doczj.com/doc/de13681686.html,,不得作为商用 目次: 1.建立项目 2.在项目中插入MSComm控件 3.利用ClassWizard定义CMSComm类控制变量 4.在对话框中添加控件 5.添加串口事件消息处理函数OnComm() 6.打开和设置串口参数 7.发送数据 在众多网友的支持下,串口调试助手从2001年5月21日发布至今,短短一个月,在全国各地累计下载量近5000人次,在近200多个电子邮件中,20多人提供了使用测试意见,更有50多位朋友提出要串口调试助手的源代码,为了答谢谢朋友们的支持,公开推出我最初用VC控件MSComm编写串口通信程序的源代码,并写出详细的编程过程,姑且叫串口调试助手源程序V1.0或VC串口通讯源程序吧,我相信,如果你用VC编程,那么有了这个代码,就可以轻而易举地完成串口编程任务了。(也许本文过于详细,高手就不用看) 开始吧: 1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点); 2.在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,

串口调试助手使用规范V15.01(试用)

串口调试助手使用规范(试用) ——截取指令方法
版本:V15.01 日期:2015.0128 类别:APP 使用规范
1
串口调试助手使用规范(试用) 截取指令方法
广州市英沙电子系统有限公司 2015-01-28 发布

串口调试助手使用规范(试用) ——截取指令方法
版本:V15.01 日期:2015.0128 类别:APP 使用规范
2
目 录
1 引言 ................................................................................................................................................................................... 3 2 使用前准备........................................................................................................................................................................ 3 3 串口调试助手及其安装 ................................................................................................................................................... 3 4 串口线与设备的物理连接 ............................................................................................................................................... 4 5 串口调试助手截取指令步骤 ............................................................................................................................................ 4 6 分析截取的指令............................................................................................................................................................... 6?

串口调试助手使用说明概要

串口调试助手使用说明 为简单明了,有些不言自明的功能不作介绍。 1 串口调试助手 1.1 设置串口参数: 串口号:1-16 波特率:600-256000,>115200 时需要硬件支持。 2 接收区/键盘发送区 2.1 接收数据 a 设置串口参数 b 如果要按十六进制形式显示接收数据,将十六进制显示选项选中。 c 点击打开/关闭串口区中的打开串口按钮。 2.2 显示接收数据的长度 因某些限制,显示接收数据的文本不能太长,所以当显示文本长度快达到 62K 时会自动将显示文本删减到 32K,此时文本可保留 32K 的字符或约 10K 的十六进制数据显示。 2.3 在键盘上发送英文字符 a在接收区/键盘发送区的输入框中用鼠标点一下。 b在键盘按下按键立刻发送。 在这里不能发送回车换行,也不能发送汉字,若要发送请在单字符串发送区发送。 3 发送数据 可以发送单字符串,多字符串(字符串序列或直接在键盘上发送英文字符。有两种发送数据格式,一种是普通的字符串,另外一种是十六进制数据即 HEX 格式数据。发送 HEX 格式数据时要在字符串输入区中输入 HEX 格式字符串,并且要将相应区内的十六进制发送选项选中。 例:HEX 格式数据字符串12 34 AB CD FF

3.1 单字符串发送区 3.1.1自动发送,自动发送周期: 此项功能可以每隔一段时间反复地自动发送输入框中的数据,点击自动发送按钮后即启动自动发送功能。 自动发送周期最大为 65535mS。 3.2 多字符串发送区 在多字符串发送区可以发送一个字符串,或者自动地、依次发送所有的字符串。 请把鼠标移到“接收区/键盘发送区”和“多字符串发送区”之间,当鼠标形状发生变化时按下鼠标器的左键不松开,然后移动鼠标,将“多字符串发送区”的宽度调宽一些,让“间隔时间”显露出来。 3.2.1发送一个字符串 a 输入字符串。 b 如果要发送 16 进制数据, 要先在字符串后的 HEX 选项框中打上对勾。 c 点击发送按钮。发送后,按钮上的数字作为当前字符串序号保存起来,此序号在自动循环发送中要用到它。 3.2.2 发送多个字符串(字符串序列 a 输入多个字符串。 b 如果要发送 16 进制数据, 将相应的 HEX 选项打上对勾。 c 输入间隔时间,最大为 65535mS。 d 点击自动循环发送按钮。 延时时间到达后发送当前字符串( 见3.2.1的步骤 c 的下一个字符串,间隔一段时间后再发送下一个。发送完毕自动从头开始继续发送。 4 打开/关闭串口区 下载后打开串口选项:选中这选项后,每次下载后会自动打开调试助手指定的串口,接收应用程序发送的数据。

串口调试助手c开发

1.建立项目: 打开VC+ + 6.0,建立一个基于对话框的MFC应用程序SCommTest(与我 源代码一致,等会你会方便一点); 2.在项目中插入MSComm控件 选择Project菜单下Add To Project子菜单中的Componentsand Controls,选项,在弹出的对话框中双击Registered ActiveXControls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。选择Microsoft Communications Control,version6.0,,单击Insert 按钮将它插入到我们的Project 中来,接受缺省的选项。(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX 一项选上,重新安装VC6,选上ActiveX就可以了),这时在ClassView 视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。3.利用ClassWizard定义CMSComm类控制对象 打开ClassWizard- >Member Viariables 选项卡,选择CSCommTestDlg^,为IDC_MSCOMM1添加控制变量:m_ctrlCom m,这时你可以看一看,在对话框头文件中自动加入了//{{AFX_INCLUDES()#include "mscomm.h" //}}AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。 4 .在对话框中添加控件 向主对话框中添加两个编辑框,一个用于接收显示数据ID为 IDC_EDIT_RXDATA另一个用于输入发送数据,ID为IDC_EDIT_TXDAT A再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为 IDC_BUTTON_MANUALSEND别忘记了将接收编辑框的Prop erties->Styles 中把Miltiline和Vertical Scroll属性选上,发送编辑框若你想输入多行文字,也可选上Miltiline。

串口调试助手C++开发

1.建立项目: 打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点); 2.在项目中插入MSComm控件 选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX 控件出现在列表框中。选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。

3.利用ClassWizard定义CMSComm类控制对象 打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动加入了//{{AFX_INCLUDES() #include "mscomm.h" //}}AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。 4.在对话框中添加控件 向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。别忘记了将接收编辑框的Properties->Styles中把Miltiline和Vertical Scroll属性选上,发送编辑框若你想输入多行文字,也可选上Miltiline。 再打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg 类,为IDC_EDIT_RXDATA添加CString变量m_strRXData,为

C++课程设计 串口调试助手

目录 【内容摘要】 (2) 【关键词】 (2) 1 开发语言及开发平台简介 (3) 1.1 开发语言 (3) 1.1.1 C语言 (3) 1.1.2 C++语言 (3) 1.2 开发平台 (4) 1.2.1 Microsoft Visual C++ (4) 1.2.2 C++ Builder (5) 2 软件开发过程 (6) 2.1 开发所需要的控件 (6) 2.1.1 按钮控件 (6) 2.1.2 文本控件 (6) 2.1.3 串口控件 (6) 2.1.4 选择控件 (7) 2.2 数据发送设计 (7) 2.3 数据接收设计 (9) 3 软件使用说明 (11) 4 软件测试 (13) 4.1 辅助工具 (13) 4.2 发送测试 (13) 4.3 接收测试 (13) 5 总结 (15) 致谢 (16) 参考文献 (17) 附录主要程序 (18) 串口发送程序 (18) 串口接收程序 (19) 【Abstract】 (21) 【Key Words】 (21)

串口调试助手设计 专业:电子科学与技术学号:XXXXXXXXXXX 学生姓名:X X X 指导老师姓名:X X X 【内容摘要】串口调试助手是串口调试相关工具,网络上有很多串口调试助手,界面不同,功能各异,使用的开发语言和开发平台也不相同。有的使用C语言开发,有的使用C++语言开发,还有的即使用C语言也使用C++语言;开发平台有的使用Visual C++,有的使用C++ Builder等。本软件使用C语言和C++语言,开发平台使用C++Builder软件。该串口调试助手串口调试助手版支持常用的110 ~ 256000bps波特率,能设置校验、数据位和停止位,能以ASCII码或十六进制接收或发送数据或字符(包括中文),能发送文本文件(*.txt 文本),可以任意设定自动发送周期,并能将接收数据保存成文本文件(*.txt),是做项目开发调试串口的好工具。 【关键词】串口;C++;C++ Builder;控件;测试;

串口调试助手3_用户手册

串口调试助手3.0版 使用说明书

目录 串口调试助手3.0版 (1) 使用说明书 (1) 串口调试助手3.0版简介 (1) 安装串口调试助手3.0版 (2) 使用频道列表 (3) 使用A频道 (4) 使用B频道 (5) 使用C频道 (6) 使用D频道 ............................................................ 错误!未定义书签。

软件使用说明书串口调试助手3.0版简介 串口调试助手3.0版是WMD工 作室最新研发的智能调试工具, 是不折不扣的“串口助手”。 串口调试助手3.0版可以实现的功 能包括发送接受16进制数、字符 串、传输文件、搜索出空闲串口 等,此外,还可以搜索用户自定义设置其他的项目。 为了让大家更好的使用串口调试助手3.0版将提供自动更新功能,用于免费升级软件以及修正bug.。 1

软件使用说明书 安装串口调试助手3.0版 安装串口调试助手需要Windows 2000/XP/2003/Vista操作系统中 的任一种,Windows NT 4.0 下面 没有测试过,不保证可运行。 串口调试助手为绿色软件,下载 后只需要复制到硬盘上的指定目录中即安装完成。 因为要到网络上加查更新,如果您的计算机的安 全防护软件提示,该程序需要访问网络的时候, 建议选择“允许”访问。 2

软件使用说明书使用列表 软件安装完成后,直接双击“串口调试助手3.0”即可运行软件。 检查串口线是否连接到计算机和设备 上。如果2端都是本计算机上的串口, 一定确认串口调试助手打开的是您指 定的串口。 3

基于labview串口助手设计

学院:华东交通大学机电工程学院班级:2012xxxxxx 学号:2012xxxxxxxx 姓名:xxxx

目录 《虚拟仪器设计》课程设计任务书 (2) 1.引言 (4) 2. labview及串口通信简介 (4) 2.1 Labview (4) 2.2串口通信简介 (5) 3.串口相关节点介绍 (6) 3.1 VISA配置串口 (6) 3.2 设置缓冲区大小 (7) 3.3visa写入 (7) 3.4 VISA读取 (7) 4.程序框图设计 (8) 4.1 串口初始化输入模块 (8) 4.2数据发送程序 (9) 4.3数据接收 (9) 4.4字节数显示 (10) 4.5 属性节点设置 (10) 5.前面板设计 (10) 6.结语 (11) 7.心得体会 (12) 8. 参考文献 (13)

华东交通大学机电工程学院 《虚拟仪器设计》课程设计任务书 学生姓名:高俊须学号:20120310110212 一、设计题目 串口调试助手设计 二、设计目的和要求 通过对虚拟仪器的设计,了解虚拟仪器设计的基本原理及常用的对象使用方法;通过设计一台虚拟式数据采集系统、图形识别系统、通过串口、并口控制、测温系统、转速测量系统等,了解虚拟仪器数据采集卡的使用及设置,并口或串口的数据传输,了解虚拟编程中如何使用非NI公司的数据采集卡或电脑中常用的声卡,如何配置DAQ助手等,学会把外界物理信号采集到计算机并进行简单分析或者通过虚拟仪器产生符合要求的信号并通过声卡输出或者学会利用NI的ELVIS系统设计简单的测量软件。加深虚拟仪器知识、单片机的了解,培养学生运用虚拟仪器思想解决工程实际问题的能力。 二、设计内容 A.详细要求: (1)串口可选;(2)波特率可调;(3)串口通讯方式可调(9位还是11位); (4)校验方式可选(奇校验偶校验);(5)设计界面要标准 B.前面板上要设置必要的控件对象以设置相应参数。 C.设计界面要美观,程序可读性好。 三、设计进度安排 设计时间总计2周 课程设计任务及要求讲解(0.5天) 设计任务分析及查找资料(1.5天) 程序编制及调试(5.5天) 设计说明书撰写(2天) 答辩(0.5天) 四、设计任务书应包括的主要内容 目录设计题目任务分析实现过程程序前面板及流程图

基于labview串口助手设计资料

虚拟仪器课程设计题目:串口调试助手设计 学院:华东交通大学机电工程学院班级:2012xxxxxx 学号:2012xxxxxxxx 姓名:xxxx

目录 《虚拟仪器设计》课程设计任务书 (2) 1.引言 (4) 2. labview及串口通信简介 (4) 2.1 Labview (4) 2.2串口通信简介 (5) 3.串口相关节点介绍 (6) 3.1 VISA配置串口 (6) 3.2 设置缓冲区大小 (7) 3.3visa写入 (7) 3.4 VISA读取 (7) 4.程序框图设计 (8) 4.1 串口初始化输入模块 (8) 4.2数据发送程序 (9) 4.3数据接收 (9) 4.4字节数显示 (10) 4.5 属性节点设置 (10) 5.前面板设计 (10) 6.结语 (11) 7.心得体会 (12) 8. 参考文献 (13)

华东交通大学机电工程学院 《虚拟仪器设计》课程设计任务书 学生姓名:高俊须学号:20120310110212 一、设计题目 串口调试助手设计 二、设计目的和要求 通过对虚拟仪器的设计,了解虚拟仪器设计的基本原理及常用的对象使用方法;通过设计一台虚拟式数据采集系统、图形识别系统、通过串口、并口控制、测温系统、转速测量系统等,了解虚拟仪器数据采集卡的使用及设置,并口或串口的数据传输,了解虚拟编程中如何使用非NI公司的数据采集卡或电脑中常用的声卡,如何配置DAQ助手等,学会把外界物理信号采集到计算机并进行简单分析或者通过虚拟仪器产生符合要求的信号并通过声卡输出或者学会利用NI的ELVIS系统设计简单的测量软件。加深虚拟仪器知识、单片机的了解,培养学生运用虚拟仪器思想解决工程实际问题的能力。 二、设计内容 A.详细要求: (1)串口可选;(2)波特率可调;(3)串口通讯方式可调(9位还是11位); (4)校验方式可选(奇校验偶校验);(5)设计界面要标准 B.前面板上要设置必要的控件对象以设置相应参数。 C.设计界面要美观,程序可读性好。 三、设计进度安排 设计时间总计2周 课程设计任务及要求讲解(0.5天) 设计任务分析及查找资料(1.5天) 程序编制及调试(5.5天) 设计说明书撰写(2天) 答辩(0.5天) 四、设计任务书应包括的主要内容 目录设计题目任务分析实现过程程序前面板及流程图

串口调试步骤

【转】JCBus串口调试助手简明教程 2009-03-04 20:33 JCBus串口调试助手是最为您着想的串口调试助手: -自动添加 CRC-16校验码 -按需存储 8条调试消息,软件关闭后自动存储 -收发对应且时间戳精确到1毫秒,易于查找 -突出显示设备返回消息的数据部分(JCBus或部分Modbus协议) -灵活解析各种数据类型 -精确查找所有可用串口,并支持USB虚拟串口 -在线设置串口名称、波特率、奇偶校验、数据位、停止位等 -智能收发多种格式,可以手动/有限次/无限次自动发送/自动接收,发送间隔长达596小时 -全面支持 Windows98、2000、XP、Vista等多种操作系统 衷心希望她能成为您工作与学习中的好帮手。以下请阅读其简明教程: 1. 双击运行软件 如果出错,请先安装Microsoft .NET Framework 2.0,即微软.NET 2.0虚拟机。 第一次运行时,请先阅读使用协议,并单击“我同意”。如图1.1所示。

图1.1 第一次运行时请阅读使用协议,单击“我同意” 图1.2 JCBus串口调试助手的工作区域 随后,可以看到如图1.2所示的软件工作区域: 1.1 标题栏:显示为“JCBus串口调试助手” 1.2 菜单栏:包括“文件”、“帮助”等菜单项目 1.3 串口参数设置区:用于设置串口名称、波特率、校验位、数据位和停止 位等 1.4 调试结果解析区:用于解析调试过程中的数据,使数据在16进制、10 进制等之间转换。 1.5 调试区:分“消息应答”和“自动接收”两种调试方式。 A. “消息应答”:软件向设备发送一条消息后接收设备回应的信 息; B. “自动接收”:软件只负责接收设备发送的消息并在界面上显 示出来。 两种方式可以通过点击“消息应答”或者“自动接收”标签页来切换。 1.6 显示区:处于调试区的中间位置 1.7 调试操作区:记录“消息应答”方式的详细调试操作

串口调试助手源程序编程详细过程

目录: 1.建立项目 2.在项目中插入MSComm控件 3.利用ClassWizard定义CMSComm类控制变量 4.在对话框中添加控件 5.添加串口事件消息处理函数OnComm() 6.打开和设置串口参数 7.发送数据 8.发送十六进制字符 9.在接收框中以十六进制显示 10.如何设置自动发送 11.什么是VARIANT数据类型?如何使用VARIANT数据类型? 在众多网友的支持下,串口调试助手从2001年5月21日发布至今,短短一个月,在全国各地累计下载量近5000人次,在近200多个电子邮件中,20多人提供了使用测试意见,更有50多位朋友提出要串口调试助手的源代码,为了答谢谢朋友们的支持,公开推出我最初用VC控件MSComm编写串口通信程序的源代码,并写出详细的编程过程,姑且叫串口调试助手源程序V1.0或VC串口通讯源程序吧,我相信,如果你用VC编程,那么有了这个代码,就可以轻而易举地完成串口编程任务了。(也许本文过于详细,高手就不用看) 开始吧: 1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest (与我源代码一致,等会你会方便一点); 2.在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX 控件出现在列表框中。选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),

Com_串口调试工具的使用

串口调试工具的使用 串口调试工具,是电脑与下位机通讯的调试工具。使用方法主要分:配置串口、打开串口、编辑指令、发送指令四步。 打开串口调试工具如图: 第一章配置串口 单击“参数设置”按扭,弹出串口参数设置对话框: 在这里有三种方式供选择:串口类、网络类、MODEM类。

我们一般用串口类:单击“DCB设置”进入串口设置对话框 在该对话框中,一般只对:端口、波特率、数据位、停止位、奇偶校验五个属性进行设置。端口:为电脑连接的串口,如连在COM1,则填写COM1。 波特率:一般根据设备的通讯协议要求来设置,如通讯协议规定波特率为115200,则波特率应设为115200;如规定为9600,则设为9600。 数据位、停止位、奇偶校验:参数的设置也应按照通讯协议的规定来进行设置。通常为8位数据位,1位停止位,无校验。 设置好单击“确定” 第二章打开串口 对串口进行设置完后,单击主画面中的“连接设备”。

连接设备 这时会在下方的信息框看到打开串口成功。 打开串口信息 第三章编辑指令 串口打开成功后,就可以在命令编辑框中编写指令了。如图:

命令编辑框 [01][00][01][0D]是命令。 [01]中用中括号表示:一个16进制的字符[01H] [0D]表示回车。 第四章发送指令 编写好指令后,单击“手动发送”按钮。 这时在下面的命令信息框中就能看到所发出的命令和收到的命令。如图:

手动发送 发送的命令 如果没有命令返回,可能是指令发送不正确或设备参数设置不正确。 如果有指令返回,他会在发送的指令的下方显示出来, 根据串口的收发数据的原理,我们把9针头的收发数据针(2,3两针)短接。则发出的数据,同时也会被收上来。如图: 在发送的指令下方就有收到跟发送命令一样的数据返回。根据此方法,也可以用来测试串口的好坏。 发送的命令 收到的命令

经典的串口调试助手源代码.

Dim OutputAscii As Boolean Dim InputString As String Dim OutputString As String '=========================================================== =================== ======= ' 变量定义 '=========================================================== =================== ======= Option Explicit ' 强制显式声明 Dim ComSwitch As Boolean ' 串口开关状态判断

Dim FileData As String ' 要发送的文件暂存 Dim SendCount As Long ' 发送数据字节计数器 Dim ReceiveCount As Long ' 接收数据字节计数器 Dim InputSignal As String ' 接收缓冲暂存 Dim OutputSignal As String ' 发送数据暂存 Dim DisplaySwitch As Boolean ' 显示开关 Dim ModeSend As Boolean ' 发送方式判断 Dim Savetime As Single ' 时间数据暂存延时用 Dim SaveTextPath As String ' 保存文本路径 ' 网页超链接申明 Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long As Long Private Sub CloseCom( ' 关闭串口 On Error GoTo Err If MSComm.PortOpen = True Then MSComm.PortOpen = False ' 先判断串口是否打开,如果打开则先关闭 txtstatus.Text = "STATUS:COM Port Cloced" ' 串口状态显示 mnuconnect.Caption = "断开串口 "

VB串口调试助手源代码

VB串口调试助手源代码 Dim OutputAscii As Boolean Dim InputString As String Dim OutputString As String '============================================================================== ======= ' 变量定义 '============================================================================== ======= Option Explicit ’强制显式声明 Dim ComSwitch As Boolean ’串口开关状态判断 Dim FileData As String ’要发送的文件暂存 Dim SendCount As Long ’发送数据字节计数器 Dim ReceiveCount As Long ’接收数据字节计数器 Dim InputSignal As String ’接收缓冲暂存 Dim OutputSignal As String ’发送数据暂存 Dim DisplaySwitch As Boolean ’显示开关 Dim ModeSend As Boolean ’发送方式判断 Dim Savetime As Single ’时间数据暂存延时用 Dim SaveTextPath As String ’保存文本路径 ' 网页超链接申明 Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub CloseCom() '关闭串口 On Error GoTo Err If MSComm.PortOpen = True Then MSComm.PortOpen = False’先判断串口是否打开,如果打开则先关闭

串口调试工具使用及其相关技巧

串口调试是一件比较麻烦的事情,但是如果掌握一定的技巧,则事情就变得简单很多。有两个重要的工具,一个叫串口调试工具,一个叫虚拟串口。 串口调试工具由于设置本机电脑的串口的参数: 打开Port菜单——settings: 设置你所需要读写的串口的参数(一般只要选择Port number): 设置完成后然后打开该串口(Port菜单——Open COMn):

这样如果你的物理串口端(接单片机、PLC等)已经设置好,并正常工作,则你就会可以在上面的文本框看到接受到的实时数据,而在下面的文本框中输入数据,并点击Send按钮即可发送。 然而,关键的问题常常出现在物理串口,或者下位机的程序,而此时初学者往往难以找到问题所在,多次尝试失败后就会产生放弃的念头。 实际上方法很简单,核心思想就是分解问题,不是不知道到底是硬件连接问题,还是下位机程序问题,甚至有可能是上位机程序问题吗?那么就把问题分离开! 解决方案就是使用我给你的虚拟串口软件。 虚拟串口软件可以虚拟出一对相互连接且设置后的串口(物理上并不存在)。这样,物理连接的问题就被分离开了,你在计算机上直接运行上位机和下位机的程序,他们之间通过虚拟串口通信,如果没有问题,下一步诊断物理连接的问题就容易很多了。这对于串口编程效率也是至关重要的! 具体操作: 1)解压虚拟串口的压缩文件,得到一个文件夹: 2)文件夹内容如下:

这个虚拟串口不太好找,当年我花了不少时间。 运行NT6文件夹下的vsbsetup.exe文件,安装就完成了。(所以最后把你解压后的文件夹放到你一般不会移动的位置) 然后运行vspdconfig.exe,就打开这个虚拟串口软件啦! 点击Add pair,你就得到了两个虚拟的串口,一般默认为COM1,COM2,你可以自己设置虚拟的端口号(但要注意避开已有的物理端口号!) 完了之后你就可以在左边的Virtual ports中看到你的虚拟端口啦:

labview串口调试助手

《虚拟仪器技术》课程设计报告 题目:串口调试助手 专业:测控技术与仪器 班级:测控0901 学号:091301120 姓名:吴迪 指导教师:陈老师王老师 完成日期: 2013年3月

扬州大学能源与动力工程学院 2013年3月

目录 一.设计目的 (2) 二.设计步骤 (6) 1.基本框架的设计 (7) 2.配置串口各个参数 (8) 3.写入字符串 (9) 4.写入格式的选择 (11) 5.读取字符串 (12) 6.读取字符串格的选择 (13) 7.清空读取字符串 (13) 8.打开串口 (14) 9.对界面颜色的设计 (14) 三.总程序图 (15) 四.调试中遇到的问题 (16) 五.体会 (17)

第一部分 课 程 设 计 指 导 书

1.设计目的 (1)掌握Labview软件编程方法 (2)掌握虚器仪器实验室硬件的应用 (3)培养综合应用所学知识来指导实践的能力 2.设计所用仪器及器件 (1) NI公司的数据采集和信号调理卡。NI MyDQA卡,myboard 辅助电路板。 (2)计算机一台。 (3)各种相关的实验材料和设备。 3.实物内容及要求 (1)设计成果一份。 (2)课程设计报告一份。 4.进程安排 1.布置任务、查阅资料,方案设计(两天) 根据设计要求,查阅参考资料,进行方案设计及可行性论证,确定设计方案,画出详细的原理图。 2.上机在LabVIEW环境下按要求进行设计(三天) 要求在虚拟仪器上观测到正确的波形并达到规定的技术指标。

3.硬件的装配及调试(三天) 使用数据采集卡进行装配调试,使其全面达到规定的技术指标,最终通过验收。 4.总结报告(一天) 5.课程设计报告内容 总结设计过程,写出设计报告,设计报告具体内容要求如下:1.课程设计的目和设计的任务 2.课程设计的要求及技术指标 3.总方案的确定并画出原理框图。 4.各基本单元原理及设计 (结合设计图写)。 5.总原理图,工作原理、工作特性(结合框图及前面版讲解)。 6.电路安装、调试步骤及方法,调试中遇到的问题,及分析解决方法。 7.实验结果分析,改进意见及收获。 8.体会。

串口通信调试助手设计

串口通信调试助手设计 学生:(宋体五号居中) 指导教师:(宋体五号居中) (楷体五号居中) 1 发展历史和由来 串口的出现是在1980年前后,数据传输率是115kbps~230kbps。串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备。串口也可以应用于两台计算机(或设备)之间的互联及数据传输。由于串口(COM)不支持热插拔及传输速率较低,目前部分新主板和大部分便携电脑已开始取消该接口。目前串口多用于工控和测量设备以及部分通信设备中。 2 串口通信划分种类 串口通信的两种最基本的方式:同步串行通信方式和异步串行通信方式。 同步串行是指SPI(Serial Peripheral interface)的缩写,顾名思义就是串行外围设备接口。SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息,TRM450是SPI接口。 异步串行是指UART(Universal Asynchronous Receiver/Transmitter),通用异步接收/发送。UART是一个并行输入成为串行输出的芯片,通常集成在主板上。UART包含TTL电平的串口和RS232电平的串口。TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平,MDS2710、MDS SD4、EL805等是RS232接口,EL806有TTL接口。 串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。

相关主题
文本预览
相关文档 最新文档