PC机与PIC单片机串行通讯的实现
[09-12 17:53:55] 来源:http://www.88dzw.com 单片机学习 阅读:8383次
文章摘要: dcb.BaudRate=9600; //设置波特率 dcb.ByteSze=8; dcb.StopBits=onestopbit; dcb.fBinary=TRUE; //二进制通讯格式 dcb.fPar北y:FALSE; SetCommState(Hcom,&dcb) //串口参数配置 第3步,启动一个辅助线程,用于串口事件的处理。这里用他来监视串口状态,主线程则可专心进行数据处理。 HCo
PC机与PIC单片机串行通讯的实现,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.comdcb.BaudRate=9600; //设置波特率
dcb.ByteSze=8;
dcb.StopBits=onestopbit;
dcb.fBinary=TRUE; //二进制通讯格式
dcb.fPar北y:FALSE;
SetCommState(Hcom,&dcb) //串口参数配置
第3步,启动一个辅助线程,用于串口事件的处理。这里用他来监视串口状态,主线程则可专心进行数据处理。
HCommWatchThread =CreateThread ((LPSECURITY_ATTRIBUTES) NULL, (LPTHEARD_ START - ROUTINE) CommWatchPROC, GetSafeHwnd ( ),&dwThreadID);
ASSERT(hCommWatchThread! =NULL);
第4步,要为辅助线程写一个全局函数,主要完成数据接收的工作。
UNIT CommWatchProc(HWND hSendWnd)
{DWORD dwEvtMask=0;
SetCommMask(hCom,EV_RXCHAR︱EV_ _TXEMPTY);
//有哪些串口事件需要监视
WaitCommEvent(hCom,&dwEvMask,Os);
//等待串口通讯事件的发生
If(dwEvtMask&EV_RXCHAR)= =EV_RXCHAR)
//缓冲区中有数据到达
{COMSTART ComStari;
DWORD dwLenlgth;
ClearCommError(hCom,&dwErrorFlags,&ComStart);
DwLength=ComStat.cbInQuei ; //输入缓冲区有多少数据
If(dwLenlTth>0)
{BOOL fReadStari
fReadStat = =ReadFile (hCom, 1pBuffer,dwLength,
&dwBytesRead,,&Read_OS(npTTYInfO));
//读数据因为使用1pOverlapped结构,ReadFile()立即返回
FALSE;
If(! fReadStat)
{if(GetLastError()= =ERROR_IO_PENDIN)
{while (! GetOverLappedReault (hCom,&READ_OS
(opTTYInfo),&dwNytesRead,TRUE)
{dWError=GetlastError();
if(dwError==ERROR_IO_INCOMPLETE)
CONTINUE; //缓冲区数据没有读完,继续
……}
∷ PostMessage (( HWND ) hSendWnd, WM
NOTIFYPROCESS,0,0); //通知主线程,串口接到数据}
第5步,在主线程中发送下行命令:
BOOL f WriteStat;
Char szBuffer[count];
//准备好发送的数据,放在szBuffer[]中
FWrirteStar=WriteFile(hCom,szBuffer,dwbytesToWrite,
&dwBytesWritten&WRITE_OS(npTTYInof));
int err=GetLastError();
if(!fWriteStat){if(GetLastError()= =ERROR_IO_PENDING)
{while (! GetOverlappedResult (hCom,&WRITE OS
(npTTYInfO),&dwBytesWritten,true))
{dwError=GetLasrError();
if(dwError= =ERROR_IO_INCOMPLETE)
{dwBytesSent+=dwbytesWritten;
continue;))}}
3 PIC"C711单片机串行通讯的实现
本文以单片机对温度传感器DSl820进行数据采集为例,实现单片机与PC机的通讯。限于篇幅,给出传送一个DSl820信号到串口的主要部分程序:
A2 EQU 2 //RA2接收数据端
A1 EQU 1 //RAl发送数据
RCVREG EQU 26
R-COUNT EQU 27 //接收数据计数器
T-COUNT EQU 28 //发送数据计数器
MSB EQU 7
NUM EQU 6B //设置下位机序号67
NUM-ADDR EQU 2A //存储本机号码的地址
SEN-CODE EQU 39 //传感器信号存放地址
《PC机与PIC单片机串行通讯的实现》相关文章
- › PC机与单片机串行通信的硬件设计
- › PC机与PIC单片机串行通讯的实现
- › 利用RS-485通讯协议实现PC机与单片机的多点通讯
- › Matlab环境下PC机与单片机的串行通信及数据处理
- › 在Windows下实现PC机与单片机AT89C51的串行通信
- › CRC差错检验法在PC机与8031单片机串行通讯中的应用
- 在百度中搜索相关文章:PC机与PIC单片机串行通讯的实现
- 在谷歌中搜索相关文章:PC机与PIC单片机串行通讯的实现
- 在soso中搜索相关文章:PC机与PIC单片机串行通讯的实现
- 在搜狗中搜索相关文章:PC机与PIC单片机串行通讯的实现