NOTE - wangxg97的BLOG http://wangxg97.52rd.net/ - 复制 - 收藏
博 文
termios结构体内容:成员 描述 ------------------------------------------- c_cflag 控制模式标志 c_lflag 本地模式标志 c_iflag 输入模式标志 c_oflag 输出模式标志 c_line line discipline c_cc[NCCS] 控制字符 c_ispeed 输入波特率 c_ospeed 输出波特率 在termios结构中的四个标志控制了输入输出的四个不同部份。输入模式标志c_iflag决定如何解释和处理接收的字符。输出模式标志c_oflag决定如何解释和处理发送到tty设备的字符。控制模式标志决定设备的一系列协议特征,这一标志只对物理设备有效。本地模式标志c_lflag决定字符在输出前如何收集和处理。 在串口传输中,用波特率来表示传输的速度,1波特表示在1秒钟内可以传输1个码元。波特率设置可以使用cfsetispeed(&new_termios,B19200)和cfsetospeed(&new_termios,B19200)这两个函数来完成,默认的波特率为9600baud。cfsetispeed()函数用来设置输入的波特率,cfsetospeed()函数用来设置输出的波特率。B19200是termios.h头文件里定义的一个宏,表示19200的波特率。 CLOCAL和CREAD是c_cflag成员中与速率相关的标志,在串口编程中,这两个标志一定要有效,以确保程序在突发的作业控制或挂起时,不会成为端口的占有都,同时串口的接收驱动会自动读入数据。设置方法如下:termios_new.c_cflag |= CLOCAL; //保证程序不会成为端的占有者 termios_new.c_cflag |= CREAD; //使端口能读取输入...
Table of Contents 1. C语言基础 1.1. 数据类型 1.2. 关键字 1.3. 变量等级 1.4. 特殊字符的表示方法: 1.5. 格式化字符串 1.6. 指针与数组 1.7. 结构体 1.8. typedef--自定义类型名 1.9. 函数和宏 1.10. ANSI标准头文件 2. 预处理 3. 使用GCC编译程序 4. 使用gdb调试程序 5. Linux程序开发基础 5.1. 路径 5.2. 库文件 5.3. 预处理 5.4. 系统调用(system call) 6. 文件处理 7. Linux环境编程 7.1. 参数选项 7.2. 环境变量 7.3. 时间 7.4. 临时文件 7.5. 用户信息 7.6. 日志信息 8. 进程 8.1. 进程状态 9. 串口编程 9.1. 常用函数 9.2. 设置串口属性 9.3. c_iflag输入标志说明 9.4. c_oflag输出标志说明 9.5. c_cflag控制模式标志说明 9.6. c_cc[]控制字符说明 9.7. c_lflag本地模式标志说明 9.8. 下面介绍一些常用串口属性的设置方法。 10. 安全 10.1. 内核漏洞介绍 11. 数据结构(Data Structure) 11.1. 基础概念 11.2. 线性数据结构 12. 网络编程 12.1. TCP/IP协议分析 12.2. 入门示例程序 List of Tables 1.1. 特殊字符的表示方法 Chapter 1. C语言基础 Table of Contents 1.1. 数据类型 1.2. 关键字 1.3. 变量等级 1.4. 特殊字符的表示方法: 1.5. 格式化字符串 1.6. 指针与数组 1.7. 结构体 1.8. typedef--自定义类型名 1.9. 函数和宏 1.10. ANSI标准头文件 Linux是使用C语言开发的,基...
sortlinklist (2008-1-15 18:32)
using System;using System.Collections.Generic;using System.Text; namespace LinkList{    /// <summary>    /// 结点类    /// 结点数据类型用double表示    /// </summary>    public class ListNode<T> //: IComparable<T>    {        public T data; //ElemType        public ListNode(T value) : this() { this.data = value; }        internal ListNode() { this.next  = null; }        EqualityComparer<T> m_Comparer = EqualityComparer<T>.Default;        public ListNode<T> next;    }    /// <summary>    /// 链表类    /// </summary>    public class LinkList<T>//:IComparable<T>//:ICollection <T>,IEnumerator<T>,IList <T>    {        public  int count;        private ListNode<T> hNode;        public ListNode<T> head; &n...
linklist (2008-1-14 23:34)
using System;using System.Collections.Generic;using System.Text; namespace LinkList{    /// <summary>    /// 结点类    /// 结点数据类型用double表示    /// </summary>    public class ListNode<T>    {        public T data; //ElemType        public ListNode(T value) : this() { this.data = value; }        internal ListNode() { this.next  = null; }         public ListNode<T> next;    }     /// <summary>    /// 链表类    /// </summary>    public class LinkList<T>    {        private  int count;        private ListNode<T> hNode;        public ListNode<T> head;        public ListNode<T> first;   //第一个结点        EqualityComparer<T> m_Comparer = EqualityComparer<T>.Default;  &...
vector sort (2007-12-13 23:39)
#include "stdafx.h" #include <iostream>#include <algorithm>#include <functional>#include <vector>#include<string>using namespace std;string  int2str( int  num);struct para{ string name; string value;};class CImage {        public:        //myclass(int a, int b):first(a), second(b){}        string bb;  vector<para> bvec;  bool operator <(const CImage &m)const {    return this->bb < m.bb;}        //bool less_second(const b & m1, const b & m2);        };class CSeries {        public:        string aa;  vector<para> seriesvec;  vector<CImage> bvec;   bool operator <(const CSeries &m)const {    return this->aa < m.aa;}         };class CStudy{  public:        string cc;  vector<para> studyvec;  vector<CSeries> bvec;  };in...
VC++ file 操作 (2007-11-1 00:02)
 CStdioFile mFile;  CFileException  mExcept;  CString strout,tmp,tmp1;  int strpos=0;     mFile.Open("c:\\msg.txt", CFile::modeWrite, &mExcept);   CString strin="sMSG00000001\n0000|0001:100\n0000|0003:200\n";  mFile.WriteString(strin);  strin="MSG00000002\n0000|0002:100\n";  mFile.WriteString(strin);  mFile.Close();    CFile file("c:\\msg.txt",CFile::modeNoTruncate|CFile::modeReadWrite);  char *pBuf=new char[file.GetLength()+1];  ZeroMemory(pBuf,file.GetLength()+1);     file.Read(pBuf,file.GetLength());  tmp=pBuf;  while(tmp.Find("MSG",strpos)+1)  {  strpos=tmp.Find("MSG",strpos+1);  tmp1="";   }  file.Close();   mFile.Open("c:\\msg.txt", CFile::modeReadWrite, &mExcept);     while(mFile.ReadString(strout))  {   if(!strout.Find("MSG",0))   {   tmp=strout;   }   else   {    tmp1=strout;    }   }
fileSystemWatcher (2007-10-28 23:19)
using namespace System::IO;using namespace System::Threading;namespace FileMonitor {  using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing;  /// <summary> /// Form1 摘要 /// /// 警告: 如果更改此类的名称,则需要更改 ///          与此类所依赖的所有 .resx 文件关联的托管资源编译器工具的 ///          “资源文件名”属性。否则, ///          设计器将不能与此窗体的关联 ///          本地化资源正确交互。 /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public:  Form1(void)  {   InitializeComponent();   //   //TODO: 在此处添加构造函数代码   //  }  protected:  /// <summary>  /// 清理所有正在使用的资源。  /// </summary>  ~Form1()  {   if (component...
ARM基础知识二 (2007-3-18 11:41)
ARM基础知识二 *************************************************************** 程序状态寄存器 ***************************************************************  CPSR(当前程序状态寄存器)在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。每一种处理器   模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。由于用户模式和系统模式不是异常   中断模式,所以他没有SPSR。当用户在用户模式或系统模式访问SPSR,将产生不可预知的后果。  CPSR格式如下所示。SPSR和CPSR格式相同。  31  30  29  28  27           26           7  6  5  4  3  2  1  0 N   Z   C   V   Q          DNM(RAZ)       I  F  T  M4 M3 M2 M1 M0   ***条件标志位***  N——本位设置成当前指令运算结果的bit[31]的值。当两个表示的有符号整数运算时,n=1表示运算结果为负数,n=0表示结果为正书或零。   z——z=1表示运算的结果为零;z=0表示运算的结果不为零...
ARM基础知识一 (2007-3-18 11:36)
ARM基础知识一 ARM处理器共有37个寄存器。其中包括:   **31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。   **6个状态寄存器。这些寄存器都是32位寄存器。   ARM处理器共有7种不同的处理器模式,每一种模式中都有一组相应的寄存器组。在任何时刻,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式公用一个物理寄存器,有一些寄存器各模式拥有自己独立的物理寄存器。 **************************************************** 通用寄存器 ***************************************************8   通用寄存器分为以下三类:备份寄存器、未备份寄存器、程序计数器PC   未备份寄存器   未备份寄存器包括R0-R7。对于每一个未备份寄存器来说,所有处理器模式下都是使用同一个物理寄存器。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的场合都可以使用未备份寄存器。   备份寄存器   对于R8-R12备份寄存器来说,每个寄存器对应两个不同的物理寄存器。系统为将备份寄存器用于任何的特殊用途,但是当中断处理非常简单,仅仅使用R8-R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理非常迅速。   对于R13,R14备份寄存器来说,每个寄存器对应六个不同的物理寄存器,其中的一个是系统模式和用户模式共用的;另外的五个对应于其他的五种处理器模式。采用下面的记号来区分各个物理寄存器:   R13_<MODE>...
ARM入门 (2007-3-18 11:21)
ARM入门 1 ARM 的启动   一般的嵌入式系统在主程序执行之前都需要执行一些初始化的过程以创造嵌入式程序运行的环境,尤其是一些高级的嵌入式系统,由于核心芯片使用内存映射、内存保护等机制以及编程使用高级语言 C,C++ 甚至 JAVA 语言,都需要先创建一个适合程序运行的硬件环境,然后初始化或者配置或者剪裁 run-time library, 这些工作都必须在主程序运行前完成,所以一个 startup 程序或者程序组对于一个嵌入式系统来说是非常重要的。要编写 startup 程序,需要对编译器、链接器和汇编器的细节有一定的了解,同时对 ARM 芯片硬件本身的地址分配以及 memory mapping 机制也需要有一些了解。   2 ARM 程序的工作过程   首先由各种 source file 经过编译产生 object 文件,然后 object 文件经过链接生成 Image 文件,然后通过 ICE 的方法,根据描述文件的指定下载到目标板上的固态存储器指定地址当中,比如 flash , EEPROM, ROM 等等。在程序执行之前,根据某些描述文件,将需要读写数据的部分读出放入动态存储器比如 RAM 当中,然后程序从 ROM 开始执行。或者有时为了提高程序的运行速度,也可以将所有的程序 ( 有一些 root 的部分除外,以后会提及 ) 通过一个描述文件放入指定的 RAM 当中,然后程序从 RAM 开始执行,但是这样会耗费大量的动态存储器,所以大部分程序会取折中的方法,将需要快速运行的部分和要读写的部分放入 RAM 中 ( 一般读固态存储器的过程和动态存储器的过程是一样的,但是写就不同了,所以读写的部分一定要放到 RAM 中 ) ,而只读的部分和对速度...
博 主
进入wangxg97的首页
博客名称:NOTE
日志总数:14
评论数量:6
访问次数:34872
建立时间:2007-3-14 20:25:00
导 航
公 告
评 论
链 接