向RS232发送电压

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

先感谢您。

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

有点……

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

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

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

带有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) 品脱7(RTS)。
serialPort1.DtrEnable = true; 或者serialPort1.RtsEnable = true;