资源描述:
《嵌入式实验四:串口传输实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验报告课程名称嵌入式系统设计实验仪器清华同方辰源嵌入式系统实验箱实验名称实验四:串口传输实验系别计算机学院专业计算机科学与技术班级/学号学生姓名实验日期成绩指导教师实验四:串口传输实验一、实验问题回答(1)本实验引入了Send和Receive两个变量表示上传或下传数据,用状态机怎么实现?答:switch(oledkey[0])caseF:state=l;//Receive=1;//Send=0;break;caseE:state=2;//Send=1;//Receive=0;break;switch(state){case0:break;case1:recive
2、();break;case2:send();break;(2)了解串口通讯原理。答:串口按位(bit)发送和接收字节,串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。1、51系列单片机的串口有4个模式,可分别用作串并转换、并串转换、异步串行通信(2种模式)。异步串行通信中,有1+8+1和1+8+1+1两种帧格式,多机通信是特殊的通信方式。2、基木原理是两组移位寄存器。将并行通信转换成串行通信模式(发送部分),或反之(接收部分)。可全双工运行。3、速度通过移位脉冲决定。具体一般通过定时器1的自动装载模式产生的溢出脉冲
3、给出。4、电平上采用的是CMOS逻辑。5、以上是物理层和数据链路层的单片机串口模块的约定,其他层需要软件人员根据需要自行把握。另外,电平需要根据实际通信环境做变换,如232、485或红外等。(3)了解在上位机(PC端)端,C程序中如何调用串口?答:#include#includeHANDLEhCom;intmain(void){hCom=CreateFile(TEXT(HCOM3H),//COM1口GENERIC_READ
4、GENERIC_WRITE,//允许读和写0,//独占方式NULL,OPEN_EXISTING,〃打开
5、而不是创建0,//同步方式NULL);if(hCom==(HANDLE)-l){printff打开COM失败!“);returnFALSE;)else{printf(HCOM打开成功!u);}SetupComm(hCom,1024,1024);〃输入缓冲区和输出缓冲区的大小都是1024COMMTIMEOUTSTimeOuts;〃设定读超时TimeOuts.ReadIntenzalTimeout=1000;TimeOuts.ReadTotalTimeoutMultiplier=500;TimeOuts.ReadTotalTimeoutConstant=500
6、0;〃设定写超时TimeOuts.WriteTotalTimeoutMultiplier=500;TimeOuts.WriteTotalTimeoutConstant=2000;SetCommTimeouts(hCom,&TimeOuts);〃设置超时DCBdeb;GetCommState(hCom,&dcb);dcb.BaudRate=9600;//波特率为9600dcb.ByteSize=&〃每个字节有8位dcb.Parity=NOPARITY;〃无奇偶校验位dcb.StopBits=ONE5STOPBITS;//两个停止位SetCommState(hCom,
7、&dcb);DWORDwCount;//读取的字节数BOOLbReadStat;while(l){PurgeComm(hCom,PURGE_TXCLEAR
8、PURGE_RXCLEAR);//清空缓冲区charstr[9]={0};printf(”%s”,str);bReadStat=ReadFile(hCom,str,9,&vvCount,NULL);if(!bReadStat){printif读串口失败!”);returnFALSE;}else{str[8]=' :printf(”%s”,str);}Sleep(lOO);(2)了解在上位机(PC端)端
9、,JAVA程序中如何调用串口?答:publicstaticvoidprocess(){try{EnumerationportList=CommPortIdentifier.getPortIdentifiers();while(portList.hasMoreElements()){CommPortldentifierportld=(CommPortIdentifier)portList.nextElement();讦(portId.getPortType()==CoiTimPortIdentifier.PORT_SERIAL)//如果端口类型是串口则判断名称bre
10、ak;}e