LPC2103系列之无线蓝牙控制小车上位机详细教程.docx

上传人:b****0 文档编号:9448539 上传时间:2023-05-19 格式:DOCX 页数:17 大小:518.62KB
下载 相关 举报
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第1页
第1页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第2页
第2页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第3页
第3页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第4页
第4页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第5页
第5页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第6页
第6页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第7页
第7页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第8页
第8页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第9页
第9页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第10页
第10页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第11页
第11页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第12页
第12页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第13页
第13页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第14页
第14页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第15页
第15页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第16页
第16页 / 共17页
LPC2103系列之无线蓝牙控制小车上位机详细教程.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

LPC2103系列之无线蓝牙控制小车上位机详细教程.docx

《LPC2103系列之无线蓝牙控制小车上位机详细教程.docx》由会员分享,可在线阅读,更多相关《LPC2103系列之无线蓝牙控制小车上位机详细教程.docx(17页珍藏版)》请在冰点文库上搜索。

LPC2103系列之无线蓝牙控制小车上位机详细教程.docx

LPC2103系列之无线蓝牙控制小车上位机详细教程

LPC2103系列之无线蓝牙串口模块驱动小车

第一步:

当然是编写上位机程序。

下面将详细讲解,至于2103的编写,将在另一篇文档里面,LPC2103系列之无线蓝牙驱动小车程序。

我是个初学者,可能没做好,你可以加我QQ:

,我把整个工程发给你。

不过要说明哦,不然可能不加。

1,首先,你要有一个蓝牙串口模块,如图。

它是成对出现的,一个主机,一个从机,他们是全双工的。

如上图,1是从机,2是主机。

如果你要用电脑蓝牙配对的话,只能和从机配对。

在本实验中,主从机可以调换,不影响。

2,。

用VC++6.0编写上位机,教程入下。

1。

首先打开vc,在文件中选择新建。

建立一个工程。

Chuankou1。

点确定。

2,选择基本对话框。

点下一步。

3.点下一步。

4.点下一步。

5.点完成。

注意,有的选项,不要弄错了哦。

6.添加串口控件。

点击Insert.然后点确定。

确定。

在对话框上添加一个组框,在组框中添加5个单选按钮,标题为串口1~串口5。

(可以根据需要自己增加或删减)。

我们给单选串口1添加属性“组”。

右键控件,选择属性,修改标题。

如下。

我们编译一下,看看是否实现了单选的功能。

点击RecourseView,展开chuankou1recourses->Dialog,双击IDD_CHUANKOU1_DIALOG,编辑我们的主界面对话框。

双击击“电话”,弹出如下对话框,按确认键:

添加按钮控件,编辑框,静态文本。

文字说明可以不要。

并修改相应的标题。

 

查看->建立类向导MFCClassWizard->MemberViariable,选择ClassName为CChuankou1Dlg的类,ControlID为MSCOMM1,双击它,为它添加控制变量m_comm1。

类似的,选择IDC_BUTTON2添加控制变量m_serial。

(注意,BUTTON2对应上图的打开串口,前进对应BUTTON1,后退对应BUTTON4,左转对应BUTTON5,右转对应BUTTON3)。

(建立类向导也可以右击然后在弹出的快捷菜单里选择建立类向导)

基本框架已经出来了。

下面就是程序部分了。

回到窗口部分,双击打开串口。

添加如下代码;

//m_portnum是一个全局变量,用来确定打开哪一个串口。

if(!

m_comm1.GetPortOpen())//判断串口是否已经打开

{

chartemp[]={0};

m_comm1.SetCommPort(m_portnum);

m_comm1.SetPortOpen(TRUE);//如果串口是关闭的,则打开串口

MessageBox("串口已打开","提示");

sprintf(temp,"%d",m_portnum);

SetDlgItemText(IDC_EDIT1,temp);//更新静态文本控件

m_serial.SetWindowText("关闭串口");//按钮显示状态改变

}else{

m_comm1.SetPortOpen(FALSE);//如果已经打开串口,则关闭串口

MessageBox("串口已关闭","提示");

SetDlgItemText(IDC_EDIT1,"0");//更新静态文本控件

m_serial.SetWindowText("打开串口");//按钮显示状态改变

}

在源码编辑里,打开chuankou1Dlg.cpp文件,进行窗口初始化函数的编写。

找到BOOLCChuankouDlg:

:

OnInitDialog()函数,

在SetIcon(m_hIcon,FALSE);//Setsmallicon

//TODO:

Addextrainitializationhere

后面添加如下初始化代码:

if(!

m_comm1.GetPortOpen())//判断串口是否已经打开

{

m_comm1.SetCommPort(m_portnum);//选择串口号

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

m_comm1.SetInputMode

(1);//输入模式选为二进制

m_comm1.SetSettings("9600,n,8,1");//设置串口参数,波特率57600,无奇偶校验,1位停止位,8位数据位

MessageBox("串口初始化完毕","提示");//提示串口成功初始化

}elseMessageBox("串口被占用","提示");//如果已经打开串口,消息框提醒

在BOOLCChuankouDlg:

:

OnInitDialog()里面,加上全局变量m_portnum,代码如下。

m_portnum=1;

 

回到,chuankou1resources------IDD_CHUANKOU_DIALOG

双击“前进”按钮,点确定。

然后添加如下代码:

CByteArraym_Array;//定义字节数组

m_Array.RemoveAll();//字节数组清空

m_Array.SetSize

(1);//设定维数为1

m_Array.SetAt(0,0x01);/./0x01就是在你点前进按钮的时候,向串口发送的数据。

m_comm1.SetOutput(COleVariant(m_Array));//由于SetOutput函数的参数为VARIANT型

同理,后退,左转,右转。

但是发送的数据不能一样。

因为涉及到后面的判断。

我设置的是:

后退m_Array.SetAt(0,0x02);左转m_Array.SetAt(0,0x03);右转m_Array.SetAt(0,0x04);

再次回到chuankou1resources------IDD_CHUANKOU_DIALOG

双击“串口1”单选。

点确定。

然后添加如下代码:

m_portnum=1;

其他的同理。

如上图;

 

双击编辑框点确定。

里面不用写代码;

 

当然,到这儿就可以了,但是有的同学想用键盘控制,怎么办。

首先

到ClassView右键CChuankou1Dlg选择添加虚函数

 

注意:

上图的PreTranslateMessge要双击,然后被添加到右边的Existingvirrualfunctioneverrides中。

 

展开CChuankou1Dlg找到PreTranslateMessage(MSG*pMsg)并双击。

然后添加如下代码:

if(pMsg->message==WM_KEYDOWN)

{

switch(pMsg->wParam)

{

caseVK_UP:

{

CByteArraym_Array;//定义字节数组

m_Array.RemoveAll();//字节数组清空

m_Array.SetSize

(1);//设定维数为1

m_Array.SetAt(0,0x01);//给m_array[0]赋值0

m_comm1.SetOutput(COleVariant(m_Array));//由于SetOutput函数的参数为VARIANT型,必

}

break;

caseVK_DOWN:

{

CByteArraym_Array;//定义字节数组

m_Array.RemoveAll();//字节数组清空

m_Array.SetSize

(1);//设定维数为1

m_Array.SetAt(0,0x02);//给m_array[0]赋值0

m_comm1.SetOutput(COleVariant(m_Array));//由于SetOutput函数的参数为VARIANT型,必

}

break;

caseVK_LEFT:

{

CByteArraym_Array;//定义字节数组

m_Array.RemoveAll();//字节数组清空

m_Array.SetSize

(1);//设定维数为1

m_Array.SetAt(0,0x03);//给m_array[0]赋值0

m_comm1.SetOutput(COleVariant(m_Array));//由于SetOutput函数的参数为VARIANT型,必

 

}

break;

caseVK_RIGHT:

{

CByteArraym_Array;//定义字节数组

m_Array.RemoveAll();//字节数组清空

m_Array.SetSize

(1);//设定维数为1

m_Array.SetAt(0,0x04);//给m_array[0]赋值0

m_comm1.SetOutput(COleVariant(m_Array));//由于SetOutput函数的参数为VARIANT型,必

}break;

default:

break;

}

}

 

最后,说下功能,也许大家还不是很了解,就是当你按下左键的时候,会向串口发送一个数据,上面有提到。

然后,2103接受到这个数据后进行判断。

确定应该往那一边转。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2