向RS232发送电压

时间:2011-03-07 23:27:21

标签: c# serial-port

我知道我们可以使用3号引脚将数据作为输出发送到RS232。但我只是想知道还有另一种方法可以在短时间内仅将电压5v发送到RS232?我只想让5v触发PIC微控制器来做某事。

提前谢谢。

3 个答案:

答案 0 :(得分:3)

您可以使用SerialPort类的DTREnable(数据终端就绪)属性向这些相应的引脚施加正电压。这可用于向MCU发出信号。

有些事情......

serialPort.DtrEnable = true; //High
currentThread.Sleep(1000);
serialPort.DtrEnable = false; //Low
currentThread.Sleep(1000);

然而! 电压可能不兼容,因为RS232工作-25到25伏,1/0。您可能需要内置驱动器/接收器(如MAX232芯片)在MCU和计算机之间运行,或者根据您的技能水平构建接收器电路。

答案 1 :(得分:2)

只要您不在PIC端使用RTS或DTR进行流量控制,就可以使用RTS或DTR

答案 2 :(得分:0)

带TTL接口的PIC单片机使用逻辑如下:
逻辑1 == 5伏。
逻辑0 == 0伏。

带RS232接口的计算机使用如下逻辑:
逻辑1 == -3伏直到-25伏。
逻辑0 == 0直到25伏。

对于连接设备,TTL逻辑与RS232逻辑可以使用 MAX232 IC 。 MAX232将您的TTL逻辑转换为RS232逻辑。

另一个选择 - 更便宜,更简单,使用 TRANSISTOR 将TTL逻辑转换为RS232逻辑,反之亦然,请查看http://www.kmitl.ac.th/~kswichit/ap275/ap275.htm了解详细信息。

如果需要在没有硬件握手的情况下发送数据,只需引脚2(RX)引脚3(TX)引脚5(GND)即可。如果需要握手,请添加第7针(RTS)第8针(CTS)
传输数据如下:

serialPort1.Open();
serialPort1.Write("your data in here");

接收数据为dollows:

public Form1()
{
    InitializeComponent();
    this.serialPort1.DataReceived += new SerialDataReceivedEventHandler(this.serialPort1_DataReceived);
    serialPort1.Open();
}

void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    int i = 0;
    string[] DataReceived; 

    while (serialPort1.BytesToRead > 0) 
    {
        DataReceived[i] = Convert.ToByte(serialPort1.ReadByte()); // data already in here
        i++;         

        if (i == int.MaxValue-1)
          i = 0;            
    }
    // Parsing your data in here
}

如果只需要切换输出,则使用针脚4(DTR) OR 品脱7(RTS)。
serialPort1.DtrEnable = true;serialPort1.RtsEnable = true;