用C语言编写串口软件(C语言串口编程的一个例子)
今天给大家分享一下用C语言编写串口软件的知识,也会讲解一个用C语言进行串口编程的例子。如果你碰巧解决了你现在面临的问题,别忘了关注这个网站,现在就开始吧!
这篇文章的列表: 1.用C语言实现89C51串行通信程序。 2.如何用C语言写一个读写串口的程序? 3.用C语言:写一个计算机串口程序。 4.求C语言写一个电脑端的串口发送程序。 5.如何在LINUX下用C语言写一个串口程序? 用C语言实现89C51串行通信程序 void Send_Byte(uchar i)
{
WDI = ~ WDI;
TI = 0;
SBUF = I;
while(TI==0)
WDI = ~ WDI;
TI = 0;
}
void Send_String(uchar *string)
{
while(*string!=0)
{
send _ Byte(* string);
字符串;
}
}
void Com_A_Int()中断4
{
uchar idata状态;
status = SBUF
RI = 0;
if(状态== 0x02)
Send_String("HELLO ")
if(状态== 0x55)
Send_String("这是一个良好开端!")
}
这是一个串口中断程序,其他的你可以根据实际情况来写。
如何用C语言写一个读写串口的程序? 一般流程是
配置串行通信,包括序列号、波特率、校验位和停止位;
打开串口和打开文件是一样的,Linux下是这样,Windows下没试过,估计也差不多;
发送数据,也就是写串口,类似于写文件;
读取串口,就用Read。
具体功能和配置参数可以参考一些别人的代码。
使用C语言:写一个计算机串口程序。 一个标准的串口必须有很多次握手。
信号和状态信息。这是因为通信中每台计算机的CPU速度不同(这将导致
“错误帧”),并且发射机发送数据的速度比接收机接收数据的速度快(这将导致
“过冲”)。为了解决这个问题,我们使用一个简单的握手信号,即send。
机器一次只发送半个字节(低4位)的数据,而另半个字节(高4位)是
用来传递信息。我们可以简单地将信息位(高4位)编码如下:
0H:发送新的半字节数据。
1H:重新发送上次错误的数据。
2H:文件名结尾
3H:文件结束
这样,发送方每发送一个字节,就等待接收方发回信号。这一次,
信号是由发送器发送的字节。收到回波信号后,发射机发送
它与刚刚发送的字节进行比较,如果相同,则发送新的半字节,否则为重字节。
新发送。新数据和旧数据通过信息位来区分。以下是我用C语言写的。
控制串行端口的程序。
下面以一个文件发送程序为例,介绍如何用C语言控制界面。
最常用的RS-232信号:
名称pin号的含义
RTS 4请求发送
CTS 5允许发送(允许发送)
DSR 6数据集就绪(数据设备就绪)
DTR 20数据终端就绪(数据终端就绪)
TXD 2传输数据(发送数据)
RXD 3接收数据(接收数据)
GRD 7地面(地面)
用C语言写简单的界面程序源代码。
#包含“dos.h”
#包含" stdlib.h "
#包含“stdio.h”
#定义端口0
void发送文件(char fname);/*发送文件*/
void Send(int s);/*发送一个字节*/
void SendFileName(字符fname);/*发送文件名*/
void receive file();/*接收文件*/
void get filename(char f);/*接收文件名*/
void InitPort(int port,unsigned char para);/*初始化端口*/
void发送端口(int port,char c);/*端口发送*/
int read port(int port);/*读取端口字节*/
int CheckState(int port);/*检查端口状态*/
int Receive(int port,int G);/*接收一个字节*/
主(argc,argv)
int argc
char * argv[];
{
if(argc2){
printf("请输入R(接收)或S(发送)参数:");
出口(1);
}
InitPort(端口,231);
If(argv[1]=='S') /*检查选择的有效性*/
SendFile(argv[2]);
else if(argv[1]=='R ')
receive file();
否则{
printf("错误参数。请重新输入。);
出口(1);
}
}
无效发送文件(fname)
char * fname
{
FILE * fp
int ch,s;
如果(!(fp=fopen(fname," Rb ")){
printf("无法打开文件。\ n ");
出口(1);
}
发送文件名(fname);
做{
ch =(int)getc(FP);
if(ferror(fp)){
读取文件时出错。\ n ");
打破;
}
s=ch;/*取文件中一个字节的低4位*/
发送;
s = ch/16;/*取文件中一个字节的高4位*/
发送;
}while(!feof(FP));
s = 46/*发送文件结束信息*/
发送;
发送;
fclose(FP);
}
无效发送
int s;
{
int G;
发送端口(端口,s);
G=ReadPort(端口);/*等待握手信号*/
如果(s!=G)
s = s 16
做{
发送端口(端口,s);
G=ReadPort(端口);/*等待握手信号*/
}while(s!= G);
}
无效发送文件名(fname)
char * fname
{
int s,ch;
printf("现在传输文件。请稍候……”);
while(*fname){
ch =(int)fname;
s=ch;/*取文件名中一个字节的低4位*/
发送;
s = ch/16;
发送;/*取文件名中一个字节的低4位*/
}
s = 32/*发送文件名结束标志*/
发送;
发送;
}
void ReceiveFile(){
FILE * fp
char ch
国际G1,G2,G3;
char fname[15];
get filename(fname);
printf("接收文件%s.\n ",fname);
移除(fname);
如果(!(fp=fopen(fname," WB ")){
printf("无法打开输出文件。\ n ");
出口(1);
}
/*循环是检测每次收到的数据是否是新数据,如果不是,*/
/*本次接收的数据将被上次接收的数据覆盖*/
G1=ReadPort(港口);
G2 =接收(G1港口);
做{
G3 =接收(端口,G2);
ch=(char)(g1 G2 * 16);/*恢复分离的数据,并组合高4位和低4位*/
putc(ch,FP);
if(ferror(fp)){
printf(" \ n写入文件时出错。);
出口(1);
}
G2 =接收(端口,G3);
G1 = G3;
}而(G1/16!=48);
printf(" \ n传输完成。);
fclose(FP);
}
int接收(端口,G)
int端口,* G;
{
int GM
发送端口(Port,* G);
GM=ReadPort(端口);
if(GM/16==0)
返回GM;
else if(GM/16==1){
做{
* G = GM
发送端口(端口,通用);
GM=ReadPort(端口);
} while(GM/16 = = 1);
}
返回GM;
}
void获取文件名(f)
char * f;
{
国际G1,G2,G3;
char ch
G1=ReadPort(港口);
G2=ReadPort(端口);
做{
G3 =接收(端口,G3);
ch=(char)(g1 G2/16);
* f = ch
* f;
G2 =接收(端口,G3);
G1 = G3;
}而(G1/16!=32);
printf("文件名传输完成。\ n ");
}
无效InitPort(port,para)
int端口;
无符号字符para
{
union REGS reg
reg . x . dx = port;
reg . h . ah = 0;
reg . h . al = para;
int86(0x14,reg,reg);
}
void发送端口(端口,c)
int端口;
char c;
{
union REGS reg
reg . x . dx = port;
reg . h . al = c;
reg . h . ah = 1;
int86(0x14,reg,reg);
if(reg.h.ah128){
printf(" \ n发送错误!");
出口(1);
}
}
int ReadPort(端口)
int端口;
{
union REGS reg
而(!(检查状态(端口)256)){
If(kbhit()){/*如果端口长时间无数据,可以人为终止等待*/
printf("按任意键退出。");
getch();
出口(1);
}
}
reg . x . dx = port;
reg . h . ah = 2;
int86(0x14,reg,reg);
if(reg.h.ah128){
printf(" \ n读取错误!");
出口(1);
}
返回注册h . al;
}
内部检查状态(端口)
int端口;
{
union REGS reg
reg . x . dx = port;
reg . h . ah = 3;
int86(0x14,reg,reg);
返回reg . x . ax;
}
求C语言写一个计算机端串口发送程序。 printf("输入一个字符:");
ch = getch();
printf(" \ n您输入了一个' %c'\n ",ch);
SZ buffer[0]= ch;
fWriteStat = WriteFile( my_Comm,szBuffer,1,dwWritenSize,(m _ overlapped write));
如果(!fWriteStat)
printf("发送错误!\ n ");
}
如何在LINUX下用C语言写一个串口程序? 1.参考这个:POSIX操作系统串行编程指南和UNIX环境高级编程。
2.简单介绍一下:
POSIX操作系统串口编程指南是一个在UNIX环境或PC上进行串口编程的教程。每章提供的例程使用POSIX(UNIX可移植标准)终端控制功能,只需稍加修改即可运行在IRIX、HP-UX、SunOS、Solaris、Digital UNIX和Linux等大多数类UNIX操作系统中。
这就是C语言编写的串口软件介绍和C语言串口编程实例的结尾。不知道你有没有从中找到你需要的信息?如果你想了解更多这方面的内容,记得关注这个网站。
最后更新于 2023-09-03 14:15:35 并被添加「C语言 串口 」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章