2010-11-05 5 views
1

Я разрабатываю приложение на C#, которое должно связываться с матричным коммутатором через последовательную связь.Последовательная связь

string value = "abc"; 
serialPort1.Open(); 
serialPort1.WriteTimeout = 500; 
serialPort1.WriteLine(value); 
serialPort1.Close(); 

состояние Матрице бокса предполагается изменить на WriteLine(value).

Вот моя проблема. Когда я отправляю строковое значение, состояние матрицы не изменяется. Однако, когда я отправляю ту же строку через Putty (через последовательную связь), ящик матрицы отвечает правильно. Все последовательные свойства идентичны (BaudRate, DataBits, PortName и т. Д.).

Какие возможные решения я должен попробовать?

+1

FYI: Метод WriteLine() добавляет возврат каретки (hex 0x0D) к данным, отправленным по линии. Мы используем SerialPort.Write и конвертируем в шестнадцатеричные значения перед отправкой, но это может быть более сложным, если ваши команды/ответы гарантированно будут ascci, unicode или другой кодировкой. – gooch

ответ

1

Я бы проверил свойство Encoding на последовательном порту. Похоже, что по умолчанию используется ASCII. Возможно, ваше устройство ожидает Unicode?

3

Можете ли вы разместить свой код, где вы установили SerialPort? Вы должны убедиться, что все свойства, как ожидает ваш матричный коммутатор. Например:

// Setup port 
SerialPort serialPort = new SerialPort(); 
serialPort.PortName = portName; //eg. COM1 
serialPort.BaudRate = 9600; 
serialPort.StopBits = StopBits.One; 
serialPort.Parity = Parity.None; 
serialPort.DataBits = 8; 
serialPort.Handshake = Handshake.None; 
serialPort.NewLine = "\r\n"; 
serialPort.ReadTimeout = 2000; 
serialPort.WriteTimeout = 1000; 

После того, как вы назвали Open() на вашем порту вы можете проверить открытый или закрытый статус с serialPort.IsOpen собственности.

2

Загрузите PortMon http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx и выполните успешную последовательную связь с помощью Putty, обнюхивая весь обмен данными между ПК и устройством. Затем выполните свою программу и сравните журналы обмена. Это должно дать вам ответ, что сделано неправильно в вашей программе.

Смежные вопросы