做一个数据传输项目,使用铱星 来通讯。  跟铱星终端发送数据需要将数据存进一个.sbd文件中 再通过邮件附件方式发送出去   现在遇到一个很奇怪的问题  dates = new byte[] { 0x0d,0x00,0x08,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
                                string StrAppText = Encoding.ASCII.GetString(dates);可以在铱星终端上接收到数据 01 02 03 04 05 06 07 08这个是测试代码  0x0d是铱星平台的关键字 紧跟着的是  0x00 0x08  这个数据的长度 把数据换成 
dates = new byte[] { 0x0d,0x00,0x08,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x07,0x08};  
也是没有问题的
 
  现在遇到的问题是 : 传输数据时出现 0xa1  也就是任何字符开头的两位 byte 都出出现解析错误(例如0xa1-0xa9 0xb1-0xb9.....)
例如 dates = new byte[] { 0x0d,0x00,0x08,0xa1,0xb,0xc,0xd,0xe,0xf,0x17,0x18};我从铱星终端串口得到的数据是:3F 0B 0C 0D 0E 0F 17 18 它把A1解析成了3F   一般国外像这样的数据传输都使用什么编码方式?   我该用什么编码来解决这个问题呢? 

解决方案 »

  1.   

    我没有搞过卫星传输,但是我搞过猫的传输,猫的传输存在一个握手信号的问题,我想原理是一样。
    当通信的两端没有握手时,信号时杂乱的,这就要求双方有一个握手机制,比如你发送5个以上的高电平FFFFFFFFFF000D....,当第一次接受到低电平时(00),握手成功,然后是数据包
    如果5个不行,你可以继续增加高电平的数量。
    当时就是因为只发送1个高电平,导致始终握不上手。
      

  2.   


    不是。 是通过卫星通讯 ,设备安装在很偏远的地方。 没有手机信号,什么都没有 , 只有通过卫星通讯。其实就跟我们使用手机连接网络一样的道理的就和QQ一样 我这边发送数据  
    ates = new byte[] { 0x0d,0x00,0x08,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
                    去掉一些命令字段    我们看到的因该是  十进制的   1 2 3 4 5 6 7 8 十六进制中 出现 0xa1 这样的数据  另外一边显示的时候出现错误显示 ,  不是转换成十进制以后的  161 而是 63  0xa1 -0xaf  .... 0xf1-0xff  传出过来以后都成了  0x3f也就是 十进制的63  请问  这个可能是什么造成的
      

  3.   

    换成  BinaryWriter 写入文件就可以了。 。谢谢大家。