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

📄 readme.cn

📁 Linux下对串口进行编程
💻 CN
字号:
串口调试器(Serial Debugger: SDB)版本:0.0.6版权:yfy001,2001-2002说明:本软件属于自由软件,您可以自由地拷贝、分发本软件的二进制及原始代码。如果在您的软件或项目中使用了本软件中的部分或者全部源代码或者可执行代码,请保留原始作者的版权声明。编译及安装:请参见INSTALL文档注:自述文档及安装文档的后缀名为国家或地区名的英文国际域名缩写。例如,中华人民共和国为CN,则相应的自述文档及安装文档的后缀名为CN;即相应的文件名为README.CN及INSTALL.CN。项目起源:    之所以有了编写这个串口调试器的想法,缘于以前的一个项目。当时为了给公司编写一个Linux下IC卡读写卡的程序,找了许多关于linux平台的串口编程方面的资料,包括《serial-programming-howto》,以及《Serial Programming Guide for POSIX Operaing Systems》第五版。但是发现都不是很完整,相对而言后者要更完备一些。与Windows平台一大堆串口调试工具相比,Linux下的串口调试工具在网上几乎找不到。只有一个不太相关的项目。    于是,当时就下决心要写一个串口的程序供后来的程序员参考。这里简单说明一下,现在的这部分代码与当初为公司写的程序已经毫不相干。所以不用提心版权的问题。大家尽可以放心下载,如果对你的编程能有所帮助,那也是对作者辛勤劳作最大的回报。问题报告:    如果您在使用这部分代码或者可执行代码的时候发现存在一些明显的错误或者疑问,请发送电子邮件到如下地址:yfy002@21cn.com。作者不敢保证会为每一封来信都及时作复,但是在这里还是要首先感谢那里关心支持本项目的朋友。组成:    串口调试器0.0.6版由两个可执行文件组成:sdb(serial debugger)及ssf(serial send file),即串口调试器及串口文件发送程序。程序架构:    本软件源代码由以下几个文件组成:1.  types.h2.  args.c3.  args.h4.  cmd.c5.  cmd.h6.  prompt.c7.  prompt.h8.  strings.c9.  strings.h10. sdb.c11. ssf.c12. tty.c13. tty.h以下分别就上述文件逐一进行说明:1. types.h    该文件是整个项目文件类型说明的头文件;对INT32, INT16, INT8, UINT32, UINT16, UNIT8, BYTE, WORD, DWORD等数据类型进行了定义。不同的编译器对int类型的大小定义不一,如:gcc定义为4字节,而bc3.1及ms c/c++ 7则定义为2字节。同时还定义了整个项目都要用到的一个数据类型args_t,用于保存各种信息。2. args.c    该文件用于处理命令行参数以及打印帮助及版本信息。由以下三个函数组成:args_parse,args_usage以及args_version。本项目各文件中的函数(sdb.c及ssf.c除外)一般以其文件名带一个下划线为前缀。如:args.c文件中的函数前缀名为args_。cmd.c文件中的函数前缀名为:cmd_;tty.c文件中的函数前缀名为tty_;这里还有两个例外:一是strings.c中的basename函数;二是prompt.c中的prompt函数;原因我想在这里就不必多说。3. args.h    该文件为args.c相应的头文件。4. cmd.c    该文件是sdb的控制台程序,用于接收用户输入的命令并作出相应判断,执行适当的流程。该文件有一个结构非常有用:struct cmds_t;用于保存命令名及其对应的函数指针。该文件的框架已经很好,可以在此基础上不断补充新的命令。5. cmd.h    该文件为cmd.c相应的头文件。6. prompt.c    该文件非常简单,仅仅打印提示符信息。如sdb调用prompt函数打印“sdb> ”提示符。7. prompt.h    该文件为prompt.c相应的头文件。8. strings.c    该文件也非常简单,只有两个函数,一个是glibc中有的basename函数,另一个是自定义的查找第一个非空白字符的str_fnws函数。之所以将basenmae函数在这里定义出来,主要是为减少对glibc的依赖性,在这里看起来好像没有必要。但是在将来需要再次用到dirname函数的时候就能明白为什么将这种函数单独拿出来。细心的朋友可能会发现内核中将glibc中大量的库函数都重新进行了定义,原因何在?内核需要使用静态连接而不能使用动态连接,因为在内核启动之前是无法利用到任何动态连接库的。这样只将需要的函数单独拿出来可以减小可执行代码。9. strings.h    该文件是strings.c相应的头文件。10. tty.c    这是本项目最重要的文件,它将串口编程进行了封装。定义了tty_open, tty_read, tty_write, tty_close等几个非常重要的函数。为了发送文件,它还定义了tty_send_file函数。11. tty.h     该文件是tty.c相应的头文件。12. sdb.c     该文件是sdb的主文件。13. ssf.c     该文件是ssf的主文件。

⌨️ 快捷键说明

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