LNK1104: cannot open file Debug/test.exe出现下面错误两种错误,是由于空间编号
问题引起的,当我们添加了编辑框或者“电话”后再添加,其编号自动加一,就会出现控件没定义。
Z:vc串口上位机testtestDlg.cpp32 : error C2065: IDC_MSCOMM1 : undeclaredidentifierZ:vc串口上位机testtestDlg.cpp139 : error C2065: IDC_EDIT1 : undeclaredidentifier解决方法是,在 RecourseView 里,打开窗体 IDD_TEST_DIALOG,右击“电话”或者编辑框等其它出错的控件,右击选择属性,在常规里修改 ID,这里的程序,除 BUTTON 有 1、2两个之外,其它都是 1全部组建编译一下,看看有没有错误,没有错误就可以运行一下,可以看到界面更原来是一样的。
有错误就修改一下,省得弄多了,错在哪里都不知道,查起来麻烦。
8、 在源码编辑里,打开 testDlg.cpp 文件,进行窗口初始化函数的编写。
找到 BOOL CTestDlg::OnInitDialog函数,在 SetIconm_hIcon FALSE // Set small icon// TODO: Add extra initialization here后面添加如下初始化代码:gllen 0 //记录转换次数全局变量清零if m_comm1.GetPortOpen//判断串口是否已经打开m_comm1.SetCommPort1 //选择串口号 1m_comm1.SetPortOpenTRUE //打开串口m_comm1.SetRThreshold2 //收到两个字节引发 OnComm 事件m_comm1.SetInputMode1//输入模式选为二进制m_comm1.SetSettings57600n81 //设置串口参数,波特率 57600,无奇偶校验,1 位停止位,8 位数据位MessageBox串口初始化完毕提示 //提示串口成功初始化else MessageBox串口被占用提示 //如果已经打开串口,消息框提醒pbar CProgressCtrlGetDlgItemIDC_PROGRESS1//获得指向 IDC_PROGRESS1 的指针pbar - SetRange01023//设置进度条的范围 01023pbar - SetPos0//当前位置为 0m_serial.SetWindowText关闭串口//按钮显示状态改变可以看到,串口的参数等等都在在这里初始化的,可以根据自己的需要修改的,具体可以查看 VC里的详细介绍,看看有哪些参数可以给我们修改来用。
添加后再编译一下,运行后可以看到多了一个串口初始化的提示信息窗口。
至此,我们已经完成了主要的串口操作及界面,剩下的就是两个按钮的操作了。
9、 回到资源视图的 IDD_TEST_DIALOG 窗口,双击开始转换按钮,给它添加事件,点击后 PC 通过串口发送 0xaa 出来,给单片机接收。
添加如下代码:CByteArray m_Array //定义字节数组m_Array.RemoveAll //字节数组清空m_Array.SetSize1 //设定维数为 1m_Array.SetAt00xaa //给 m_array0赋值 0m_comm1.SetOutputCOleVariantm_Array//由于 SetOutput 函数的参数为 VARIANT型,必须强制转换后才能发送同样地,双击另外一个按钮,给串口操作按钮添加代码,用于关闭或者打开串口。
添加如下代码:if m_comm1.GetPortOpen//判断串口是否已经打开m_comm1.SetPortOpenTRUE //如果串口是关闭的,则打开串口m_serial.SetWindowText关闭串口 //按钮显示状态改变elsem_comm1.SetPortOpenFALSE //如果已经打开串口,则关闭串口m_serial.SetWindowText打开串口//按钮显示状态改变至此,一个简单的串口上位机
软件编写完成了,可以用来测试下,通过单片机往串口里发送数据,可以看到主窗口的的转换结果,已经进度条显示电压值变化。
要把这个程序拿出来用,只需把…vc串口上位机testRelease 的 test.exe 拷出来用就行。
Release 可以在编译窗口里选择 win32 release,然后重新编译一下就出来了。