c串口通信编程实践
① 如何用c语言实现PC间串口通信逐bit传输.
想实现1bit,1bit传输,开始一个起始位,最后一个结束位,是否可以实现.
答:能!但是这是一种非标准的协议类型,就不能用一般的UART控制器实现。对于单片机来说可以用普通IO口模拟,就像18B20的单线通信一样,一个bit一个bit的发。在计算机上你可以通过驱动软件控制串口或者并口中的一条引脚,再加上一条地线就可以与另外一台计算机的对应端口的引脚进行bit方式的数据收发了。
② 《Visual+C++_Turbo+C串口通信编程实践》与《Visual C++串口通信技术详解》哪本内容好,望高手指点一下
我用的是《Visual+C++_Turbo+C串口通信编程实践》,感觉还好,串口编程时遇到的问题基本都有。
③ 用c++编写的串口通信程序,其中有要求:1.通信数据格式(ASCII编码格式) 2.通信协议(自定义ASCII)
1打开串口
HANDLE hCom; //全局变量,串口句柄
hCom=CreateFile("COM1",//COM1口
GENERIC_READ|GENERIC_WRITE, //允许读和写
0, //独占方式
NULL,
OPEN_EXISTING, //打开而不是创建
0, //同步方式
NULL);
if(hCom==(HANDLE)-1)
{
AfxMessageBox("打开COM失败!");
return FALSE;
}
return TRUE;
2.配置参数
COMMTIMEOUTS TimeOuts;
//设定读超时
TimeOuts.ReadIntervalTimeout=1000;
TimeOuts.ReadTotalTimeoutMultiplier=500;
TimeOuts.ReadTotalTimeoutConstant=5000;
//设定写超时
TimeOuts.WriteTotalTimeoutMultiplier=500;
TimeOuts.WriteTotalTimeoutConstant=2000;
SetCommTimeouts(hCom,&TimeOuts); //设置超时
DCB dcb;
GetCommState(hCom,&dcb);
dcb.BaudRate=9600; //波特率为9600
dcb.ByteSize=8; //每个字节有8位
dcb.Parity=NOPARITY; //无奇偶校验位
dcb.StopBits=TWOSTOPBITS; //两个停止位
SetCommState(hCom,&dcb);
3.接收发送数据
//同步读串口
char str[100];
DWORD wCount;//读取的字节数
BOOL bReadStat;
bReadStat=ReadFile(hCom,str,100,&wCount,NULL);
if(!bReadStat)
{
AfxMessageBox("读串口失败!");
return FALSE;
}
return TRUE;
//同步写串口
char lpOutBuffer[100];
DWORD dwBytesWrite=100;
COMSTAT ComStat;
DWORD dwErrorFlags;
BOOL bWriteStat;
ClearCommError(hCom,&dwErrorFlags,&ComStat);
bWriteStat=WriteFile(hCom,lpOutBuffer,dwBytesWrite,& dwBytesWrite,NULL);
if(!bWriteStat)
{
AfxMessageBox("写串口失败!");
}
PurgeComm(hCom, PURGE_TXABORT|
PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
④ c语言怎么实现串口通信
编程原理
程序1为查询通信方式接口程序,为一典型的数据采集例程。其中bioscom()函数初始化COM1(此函数实际调用BIOS
INT
14H中断0号功能)。这样在程序中就避免了具体设置波特率因子等繁琐工作,只需直接访问发送/接收寄存器(3F8H)和线路状态寄存
⑤ 求 龚建伟《Visual C++/Turbo C串口通信编程实践》源代码、光盘内容
我这有的,我给你找找
你是想用VC做串口的应用编程吧
我做过
搜:worldsing
笔记
欢迎交流
⑥ 急!!!单片机C语言实现串口通信编程
如果在字符数字发送框发0X00蜂铃器就会叫,如果发0xff蜂铃器就停叫。
#include <REG52.H>
#include <stdio.h>
sbit BEEP = P1^4;
unsigned char b;
void main (void) {
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80;
//TH1 = 0xFD; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)
TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //开串口中断
EA = 1; // 开总中断
BEEP=1;
// IE = 0x0;
while(1)
{
if (RI) //RI接受中断标志
{ RI=0; //清除RI接受中断标志
b=SBUF; //SUBF接受/发送缓冲器
}
BEEP=b;
}
}
这个是个发送程序,接收程序类似,不懂可继续追问,一般人都是在别人程序基础上改改称为自己的,希望楼主能够自己研究出自己的一套编程理论