Отправка напряжения на RS232 - PullRequest
2 голосов
/ 08 марта 2011

Я знаю, что мы можем использовать контакт № 3 для отправки данных в качестве выхода в RS232.Но мне просто интересно, что есть другой способ послать только напряжение 5В на RS232 за короткий период?Я просто хочу, чтобы 5 В запускал микроконтроллер PIC, чтобы что-то сделать.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 08 марта 2011

Вы можете использовать свойство DTREnable (Data Terminal Ready) класса SerialPort, чтобы подавать положительное напряжение на соответствующие контакты. Это может быть использовано для сигнализации MCU.

Что-то вроде ...

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

Однако! напряжение , вероятно, будет несовместимо , поскольку RS232 работает от -25 до 25 вольт в течение 1/0. Скорее всего, вам понадобится встроенный драйвер / приемник, например микросхема MAX232, для работы между MCU и компьютером, или, в зависимости от вашего уровня квалификации, вы можете построить схему приемника.

2 голосов
/ 08 марта 2011

вы можете использовать RTS или DTR, если вы не используете их на стороне PIC для управления потоком

0 голосов
/ 14 ноября 2012

Микроконтроллер PIC с интерфейсом TTL использовал следующую логику:
Логическая 1 == 5 вольт.
Логика 0 == 0 вольт.

Компьютер с интерфейсом RS232 использовал следующую логику:
Логическая 1 == -3 Вольт до -25 Вольт.
Логика 0 == 0 до 25 вольт.

Для подключения устройства логики TTL к логике RS232 может использоваться MAX232 IC . MAX232 переведет вашу логику TTL в логику RS232.

Другие варианты - дешевле и проще, используются ТРАНЗИСТОР для преобразования логики 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");

Получать данные в виде отложений:

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; OR serialPort1.RtsEnable = true;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...