我现在要使用serialPort控件通过串口发送16进制数0xF1,serialPort空间的serialPort.Write方法有3个重载,分别是:     SerialPort.Write (String)  将参数字符串写入输出。  
 
     SerialPort.Write (Byte[], Int32, Int32)  将指定数量的字节写入输出缓冲区中的指定偏移量处。 
 
     SerialPort.Write (Char[], Int32, Int32)  将指定数量的字符写入输出缓冲区中的指定偏移量处。 我应该使用哪一个发送?如果使用数据转换,如何转换?
请大家指点,我是新手请写详细点。谢谢。

解决方案 »

  1.   

    Byte[] byte=new Byte[1];
    byte=0xf1;
    port1.Write(byte,0,1);
      

  2.   

    不好意思是:byte[0]=0xf1; 
      

  3.   

    baihe_591 
    ==============
    你是说用下面这个方法咯?
    SerialPort.Write (Byte[], Int32, Int32)  将指定数量的字节写入输出缓冲区中的指定偏移量处。
    这个方法的后两个参数是什么意思?
    如果我是连续发送3个0xf1,是不是应该这样:
    Byte[] byte=new Byte[3]; 
    byte[0]=0xf1;
    byte[1]=0xf1;
    byte[2]=0xf1; 
    port1.Write(byte,0,1);
    楼两个参数0和1代表什么?
      

  4.   

    应这样写:
    Byte[] byte=new Byte[3]; 
    byte[0]=0xf1; 
    byte[1]=0xf1; 
    byte[2]=0xf1; 
    port1.Write(byte,0,3); 
    0代表偏移量,亦即数组的起始地址;
    3代表发送的字节数。
      

  5.   

    这样的确是可以的,但是为什么serialport.write()的方法没有直接写数字的重载那,1一个参数的话只能是字符串,学习了!
      

  6.   

    定啊,c#的serialport类确实存在这个缺陷,为什么不重载能够直接写数字,如16进制的0xFF
      

  7.   


    这样做的好处是一个byte就能搞定所有要发的数据 用的时候截取就OK啦 例如:
    Byte[] byte=new Byte[5]; 
    byte[0]=0x00; 
    byte[1]=0xFF; 
    byte[2]=0xf1; 
    byte[3]=0xf1; 
    byte[4]=0xf1; 
    port1.Write(byte,2,3); 
      

  8.   

    serialPort空间的serialPort.Write方法有3个重载,分别是:   SerialPort.Write (String) 将参数字符串写入输出。   
      
       SerialPort.Write (Byte[], Int32, Int32) 将指定数量的字节写入输出缓冲区中的指定偏移量处。  
      
       SerialPort.Write (Char[], Int32, Int32) 将指定数量的字符写入输出缓冲区中的指定偏移量处。