串口设置9600,N,8,1中的N表示什么意思(10分),若是“M”又代表什么意思(如果有知道的并详细说明的,我宁愿给200分),O和E代表什么意思(30分)...串行数据的第9位为1还是0能认为设定吗,如何才能读出一个第9位为1的数据帧,谁能回答这个问题,不胜感激!

解决方案 »

  1.   

    例: "baud=96 parity=n data=8 stop=1"
    简写:"96,N,8,1"
    szSettings 的有效值
    baud:
    11 or 110 = 110 bps
    15 or 150 = 150 bps
    30 or 300 = 300 bps
    60 or 600 = 600 bps
    12 or 1200 = 1200 bps
    24 or 2400 = 2400 bps
    48 or 4800 = 4800 bps
    96 or 9600 = 9600 bps
    19 or 19200= 19200bps 
    parity:
    n=none
    e=even
    o=odd
    m=
    s=space
    data:
    5,6,7,8
    StopBit
    1,1.5,2
    第9位不能人为设定,由串口自己算出。但可以根据这一点来组装你发送的数据,如果是偶校验,这时你传输的一字节数据中有奇数个1,如只用低七位传数据(更低也可以),根据你发送的是命令还是数据来判断置1还是0来决定第九位校验的值是0或1,从而知道你发的事什么类型的数据了
      

  2.   

    串口设置9600,N,8,1的意义说明如下:
       9600为串口的传输速率,一般可以为300,600,1200,2400,4800,9600,19200 ...
       N代表无奇偶校验,O代表奇校验,E代表偶校验,应该没有M的选项,
       8代表8个数据位;
       1代表1个停止位;
    你后面一个问题我也不太明白是什么意思,看看别人是否明白?
      

  3.   

    协议的一部分如下:
    发送A1类指令,计算机串口奇偶校验位设置为高电平发送。
    这个协议不是我订的,我想定协议的人一定不懂什么是奇偶校验。
    TO jasonloo(师爷) :M是Mask的缩写,我不知道M设定的意义,还有一个S,Space的缩写,有谁知道是什么意思呢,分不是问题,我现在有接近4000分,一直苦于不能分给大家!
      

  4.   

    因为我也是新手,很多东西都很陌生,所以讲的东西可能是误导性的。不过我们人多想的办法就会多。思路更宽。也并不时什么风部分的问题。mask的意思就是始终设觉验位为1,space始终为0。如果不是通过校验位判断,那送的桢就要完全用你们定的协议来判断了。
      

  5.   

    mask的意思就是始终设觉验位为1,space始终为0,你肯定吗?有没有人用过呢,好急,万一不是这样我可惨了...
      

  6.   

    建议了解 DCB 结构。
    N 代表奇偶校验
       值        意义 
    EVENPARITY    Even(偶校验)//E代表偶校验
    MARKPARITY    Mark(标记) //Mark 指高电平
    NOPARITY      无奇偶校验//0
    ODDPARITY     奇 
    SPACEPARITY   空如果数据位为8位,串行数据第9位则是第二个字节的第一位,串行数据第9位为1还是0能认为设定吗,如果指写串口;WORD w=510; WriteFile( hComDev, &w, 2, &dwread, NULL );//设为0
    b=511,WriteFile( hComDev, &w, 2, &dwread, NULL );//第9位设为1
    读时
    ReadFile( hComDev, &w, 2, &dwread, NULL );
    if(w&128)
      //第9位是1
    else
      //第9位是0
     
      

  7.   

    刚才忘了:要正确读写串口9位数据,要设置DCB结构为:
    dcb.BaudRate =9600;
    dcb.ByteSize = 8;
    dcb.Parity = 0;
    dcb.StopBits = 0;
      

  8.   

    我好像有点懂了,是不是设为9600,M,8,1就可以使第9位(奇偶校验位)为1?怎样使其为0呢,是不是设为9600,S,8,1?如果是这样就简单了。我用的是Mscomn控件,也可以设DCB的结构吗?
    谢谢上面几位的回答,如果解决了问题,定有重谢!
      

  9.   

    如果校验位设为M,那么它在为没有重新设置之前第九位始终为1
    如果校验位设为s,那么它在为没有重新设置之前第九位始终为0
    如果校验位设为o,那么第九位的值是当前传送字节的奇校验值。
    如果校验位设为e,那么第九位的值是当前传送字节的偶校验值。
      

  10.   

    用Mscomn控件,不用设置DCB的结构,这是给串口API编程用的。
    你直接根据中断消息读取数据即可。
      

  11.   

    用 Mscomn 控件?如果你有时读完Mscomn 控件的说明,不如用Win32API函数直接读写串口,速度更快快。用CreateFile()函数打开串口,设置BCD 结构,按上述读写,不是很简单吗?
    dcb.BaudRate =9600;
    dcb.ByteSize = 8;
    dcb.Parity = 0;//奇偶校验位=0
    dcb.StopBits = 0;
      

  12.   

    N代表无奇偶校验,O代表奇校验,E代表偶校验
      

  13.   

    串口设置9600,N,8,1中的N表示没有奇偶校验位,没有“M"
    O代表奇校验,E代表偶校验
    ...串行数据的第9位不能设定,它是最多8位,表示数据位.
    最后一个是停止位.