用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语言串口编程实例的结尾。不知道你有没有从中找到你需要的信息?如果你想了解更多这方面的内容,记得关注这个网站。

相关文章

发表新评论