⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 与上次的不同.txt

📁 wince 4.0平台测试过的,绝对可用的多串口驱动
💻 TXT
字号:
仍然是那段程序,就是在serial.cpp中的读操作中ReadThread函数,我省去了随机的那个临时缓冲区,这样可以少很多操作和节省空间,总之是节省了很多时间和空间,代码也短.
if(dwLength>0)//防止无故产生事件
			{

               //从串口读取数据
                
			     //读入数据,并返回数据长度,采用同步方式
                fReadState=ReadFile(hPort,pbuf,dwLength,&dwLength,NULL);
                if(!fReadState)
				{

                //不能从串口读取数据

                    MessageBox(NULL,TEXT("Can't fetch the data!"),TEXT("Reading Error!"),MB_OK);

				}
                else
				{
					dwLength=dwLength/2;//返回的数据是字节数,我们这里将其变为字符数
					pbuf[dwLength]=NULL;//在其末尾设置字符串结尾
                     //以下将读入情况分为5种
					//第一种,含有帧头和帧尾,且个数大于1,不用设置读入信息的状态readStatus
					if (dwLength>1&&pbuf[0]==STR&&pbuf[dwLength-1]==STR)
					{
						pbuf[dwLength-1]=NULL;//在其末尾设置字符串结尾,去掉了帧尾,但保留了帧头
						//向主对话框发送信息,告知已经接收到字符,可以显示
						::SendMessage(m_hWnd,WM_COMM_RCHAR,(WPARAM)(fbuf+1),0);//+1为不显示帧头
					}
					//第二种,只有帧头,且个数大于1,//不向主对话框发送信息
					else if (dwLength>1&&pbuf[0]==STR)
					{
						readStatus=TRUE;//只有帧头,表示正在读入数据
						pbuf=fbuf+dwLength;//移动临时缓冲区指针到字符串末尾
						pbuf[0]=NULL;//在其末尾设置字符串结尾
					    
					}
					//第三种,只有帧尾,且个数大于1
					else if (dwLength>1&&pbuf[dwLength-1]==STR)
					{

						pbuf=pbuf+dwLength-1;//移动临时缓冲区指针到字符串末尾
						pbuf[0]=NULL;//在其末尾设置字符串结尾,去掉了帧尾
                        //向主对话框发送信息,告知已经接收到字符,可以显示
						::SendMessage(m_hWnd,WM_COMM_RCHAR,(WPARAM)(fbuf+1),0);//+1为不显示帧头
						pbuf=fbuf;//因为挪动了临时指针,需要复原,以备下次在用
						readStatus=FALSE;//表示读入完毕
					}
					//第四种,不含有帧头和帧尾,只是纯数据
					else if (pbuf[0]!=STR&&pbuf[dwLength-1]!=STR)
					{
						if (readStatus=TRUE)
						{
					 	    pbuf=pbuf+dwLength;//移动临时缓冲区指针到字符串末尾
						    pbuf[0]=NULL;//在其末尾设置字符串结尾
						}
					}
					//第五种,没有数据,只有帧标志
					else if(dwLength=1&&pbuf[0]==STR)
					
						if (readStatus=FALSE)//原来未开始,现在开始
							readStatus=TRUE;
						else
						//原来已开始,现在结束,并向主对话框发送信息,告知已经接收到字符,可以显示
						{
							readStatus=FALSE;
							::SendMessage(m_hWnd,WM_COMM_RCHAR,(WPARAM)(fbuf+1),0);
							pbuf=fbuf;//因为挪动了临时指针,需要复原
						}


				}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -