欢迎来到天天文库
浏览记录
ID:15441263
大小:42.00 KB
页数:16页
时间:2018-08-03
《c语言的应用范围, 发展前途》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C语言的应用范围,发展前途C一般用来底层开发,如操作系统,嵌入式开发。或者要求效率,高可移植性的地方。C对人要求很高,程序员要考虑的地方太多。他的特点就是每一个字节都可以精确控制,不象C++,编译器为你自动加的东西太多,效率也就低了。windows就是用它来开发的,linux很多程序也用它来写例如:用C语言编写简单的接口程序.在当今,流行的编程软件种类繁多,它们编程方便、易于维护,但是在与硬件直接打交道和编制系统软件时却束手无策,于是C语言就有了用武之地。C语言作为汇编语言与高级语言之间的一种过渡语言,兼有
2、汇编语言的高效和高级语言的方便。 在通讯中,为了保证行运安全可靠,标准的串行口必须具有许多握手信号和状态信息。这是因为通讯的各个计算机CPU速度不一样(这会导致“错帧”)以及发送机发送数据速度比接收机接收速度快(这会导致“过冲”)。为解决这个问题,我们采用一个简单的握手信号,即发送机每次仅发送半个字节(低4位)的数据,而另外半个字节(高4位)则用来传送信息。我们可以对信息位(高4位)进行如下简单的编码:0H:发送的是新的半个字节数据1H:重新发送上次传送错误的数据2H:文件名结束3H:文件结束这样,每当发
3、送机发送一个字节以后,就等待接受机发回送信号,这回送信号就是发送机发送过来的那个字节。发送机接收到回送信号后,把它与刚发送的字节相比较,如果相同,就发送新的半个字节,否则就重新发送。新数据与旧数据通过信息位来区分。下面就是我用C语言编写控制串行口的程序。我们以一个发送文件的程序为例,介绍一下用C语言实现对接口的控制。源程序用C语言编写简单的接口程序源代码#include"dos.h"/*c的特点在于只要有头文件,就能和任意文件接上*/#include"stdlib.h"#include"stdio.h"#d
4、efinePORT0voidSendFile(charfname);/*发送文件*/voidSend(ints);/*发送一个字节*/voidSendFileName(charfname);/*发送文件名*/voidReceiveFile();/*接收文件*/voidGetFileName(charf);/*接收文件名*/voidInitPort(intport,unsignedcharpara);/*初始化端口*/voidSendPort(intport,charc);/*端口发送*/intReadPor
5、t(intport);/*读端口字节*/intCheckState(intport);/*检查端口状态*/intReceive(intport,intG);/*接收一个字节*/main(argc,argv)intargc;char*argv[];{if(argc<2){printf("PleaseinputR(receive)orS(sent)parametre:");exit(1);}InitPort(PORT,231);if(argv[1]=='S')/*检查选择的有效性*/SendFile(argv[
6、2]);elseif(argv[1]=='R')ReceiveFile();else{printf("Errorparament.Pleaseinputagain.");exit(1);}}voidSendFile(fname)char*fname;{FILE*fp;intch,s;if(!(fp=fopen(fname,"rb"))){printf("Can'topenthefile.");exit(1);}SendFileName(fname);do{ch=(int)getc(fp);if(ferr
7、or(fp)){printf("Errorreadingfile.");break;}s=ch%16;/*取文件中一个字节的低4位*/Send(s);s=ch/16;/*取文件中一个字节的高4位*/Send(s);}while(!feof(fp));s=46;/*发送文件结束信息*/Send(s);Send(s);fclose(fp);}voidSend(s)ints;{intG;SendPort(PORT,s);G=ReadPort(PORT);/*等待握手信号*/if(s!=G)s=s+16;do{
8、SendPort(PORT,s);G=ReadPort(PORT);/*等待握手信号*/}while(s!=G);}voidSendFileName(fname)char*fname;{ints,ch;printf("Nowtransmitthefile.Pleasewait...");while(*fname){ch=(int)fname++;s=ch%16;/*取文件名中一个字节的低4位*/Send(s);s
此文档下载收益归作者所有