Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

С# управление СОМ портом через API

63K
31 мая 2012 года
Wiktor_
21 / / 31.01.2012
есть код:

// "знакомлю" программу с библиотекой
[DllImport("Kernel32.dll")]
public static extern bool EscapeCommFunction(IntPtr hFile, uint dwFunc);
...
// открываю порт
COM_port = new System.IO.Ports.SerialPort(defCom, b_r, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
COM_port.Open();
...
// и теперь хочу управлять, но среда ругается что...
// во всех нижеприведенных вариантах что некоторые аргументы - инвалиды и подчеркивает в первом и втором случае оба, в третьем только второй аргумент
// 1.
EscapeCommFunction(COM_port, 8); //1-SETXOFF;2-SETXON;3-SETRTS;4-CLRRTS;5-SETDTR;6-CLRDTR;7-;8-SETBREAK;9-CLRBREAK
// 2.
System.UInt32 SETBREAK = 8;
EscapeCommFunction(COM_port, SETBREAK);
// 3.
EscapeCommFunction(COM_port, SETRTS);
где нахомутал?
полагаю SETXOFF;SETXON;SETRTS;CLRRTS;SETDTR;CLRDTR;SETBREAK;CLRBREAK вбиты константами в какую библиотеку? (не могу найти)

СПАСИБО!
  • А просто отправлять-получать вам не достаточно? Чем вы собираетесь управлять? Что за условия начальной задачи? от D129, 31 мая 2012 года
277
31 мая 2012 года
arrjj
1.7K / / 26.01.2011
Не мешайте winapi и .NET. Все что вы хотите (вообще все что можно) сделать через EscapeCommFunction делается "родными" средствами .NET.
Почитайте документацию внимательно
63K
01 июня 2012 года
Wiktor_
21 / / 31.01.2012
Пытаюсь эмулировать скорость передачи в 5 бод. Возможности установки скорости (Baud_rate) на моем железе начинаются от 300 бод.
Увы, так надо.
А вот как сделать "родными" - к сожалению не нашел :-( .
277
01 июня 2012 года
arrjj
1.7K / / 26.01.2011
В документации сказано

Цитата:

The baud rate must be supported by the user's serial driver. The default value is 9600 bits per second (bps).



Если ваше железо (или драйвер) не поддерживает 5bps то вы и не сможете установить 5bps никак. Виндовые функции вернут ошибку. А C# вернет ArgumentOutOfRangeException. И никак не обмануть.

63K
01 июня 2012 года
Wiktor_
21 / / 31.01.2012
хочу передрать в C# фрагмент одной старой работающей программки на делфи, .
а выглядит:
EscapeCommFunction(fCOM, SETBREAK);
где fCOM - файл вывода в COM порт.

повторюсь, речь о "ручном" управлении СОМ портом, чтобы на выходе получилось "якобы" 5 бод.
277
01 июня 2012 года
arrjj
1.7K / / 26.01.2011
BreakState
Блин ну откройте ссылки, которые я даю в постах. Если не можете осилить чтение документации - соберите dll на делфи, которая будет работать с портом, а .NET используйте только как GUI.
63K
01 июня 2012 года
Wiktor_
21 / / 31.01.2012
Спасибо работает!!!
Ох эта терминология и стиль от Майкрософта для профессионалов... тяжело въезжать...

arrjj Ваши вежливость и чувство такта подкупают :-)
+

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог