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