Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2014, 17:53   #1
dim3740
Пользователь
 
Регистрация: 27.11.2009
Сообщений: 38
По умолчанию Вывод в СОМ порт фикс.уровня

Выводится только ПАКЕТ импульсов, что не есть хорошо

public Form1()
{
InitializeComponent();
SerialPort mySerialPort = new SerialPort("COM1");
}

private void button1_Click(object sender, EventArgs e) //нажмем кнопку и выведем на некоторе время
{
if (!mySerialPort1.IsOpen)
{
mySerialPort1.BaudRate = 9200; //задаем скорость.
mySerialPort1.Open();
}
for (int i = 0; i < 999; i++)
{
mySerialPort1.WriteLine("1");
}
mySerialPort1.Close();
}
dim3740 вне форума Ответить с цитированием
Старый 26.03.2014, 18:04   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

Цитата:
Выводится только ПАКЕТ импульсов, что не есть хорошо
а что есть хорошо? Партизанен за яйке подвешен?

Цитата:
9200; //задаем скорость.
9600.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 26.03.2014, 18:26   #3
dim3740
Пользователь
 
Регистрация: 27.11.2009
Сообщений: 38
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
а что есть хорошо? Партизанен за яйке подвешен?

9600.
Мне надо то, что написано в заголовке - фиксированный, то есть постоянный перепад/уровень. А что 9600 это даст?
dim3740 вне форума Ответить с цитированием
Старый 26.03.2014, 18:53   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

Что фиксированный? RS-232 - это стандарт передачи данных перепадами уровней +-5...12 вольт. Если вы хотите жмякать фиксированными уровнями, то пользуйте служебные сигналы DTR/RTS, а не TX. EscapeCommFunction() http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Код:
h= CreateFile('COM1', GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
EscapeCommFunction(h, 3 {RTS high/ 4 (low)});
И не забудьте диод или резистор со стабилитроном. Ферштеен?

Цитата:
А что 9600 это даст?
это даст стандартную скорость
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 26.03.2014 в 18:57.
raxp вне форума Ответить с цитированием
Старый 26.03.2014, 19:12   #5
dim3740
Пользователь
 
Регистрация: 27.11.2009
Сообщений: 38
По умолчанию

Задача решена, используется 4- нога 9-и пинового СОМ порта, т.е DTR. Вот работающий код:
if (!mySerialPort1.IsOpen)
{
mySerialPort1.Open();
}
mySerialPort1.DtrEnable = true; // 4 нога 9-и пинового порта
Thread.Sleep(1000);
mySerialPort1.Close();
dim3740 вне форума Ответить с цитированием
Старый 26.03.2014, 19:34   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию



Что DTR, что RTS. Что и требовалось доказать.

p.s.: кроме того, не забывайте, что вы использовали метод компонента-обертки, который в итоге все равно дергает EscapeCommFunction(). От WinAPI вам никуда не деться.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 27.03.2014, 11:23   #7
dim3740
Пользователь
 
Регистрация: 27.11.2009
Сообщений: 38
По умолчанию

Спасибо за внимание... хотя мало что понял из ваших советов ну в общем, проблема снята.
dim3740 вне форума Ответить с цитированием
Старый 27.03.2014, 11:30   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

Мда, уж. Если MSDN в упор игнорируете, то будет вам тяжело.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 30.03.2014, 15:25   #9
dim3740
Пользователь
 
Регистрация: 27.11.2009
Сообщений: 38
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
Мда, уж. Если MSDN в упор игнорируете, то будет вам тяжело.
Я ж только учусь))) И пока трудно правильно фильтровать поток инфы... Проблема: Форма 1 - разместили элемент mySerialPort1, открыли порт, вывели 1. По кнопке на Ф1 открыли Форму2, на ней такой же mySerialPort1... скинуть в 0 кодом на Ф2 не получается.... Нужно так: порт открыт в течение жизни формы 1, а управление им нужно с Ф2. Как?
dim3740 вне форума Ответить с цитированием
Старый 30.03.2014, 18:09   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

...объявите объект глобально.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lazarus, СОМ порт gusluk Lazarus, Free Pascal, CodeTyphon 10 22.07.2011 04:12
сом порт , БД olegd Помощь студентам 7 05.07.2010 10:34
освободить СОМ порт varelik Общие вопросы Delphi 11 11.02.2010 21:49
СОМ порт JUDAS Win Api 0 10.01.2009 21:27
СОМ порт SERG1980 Общие вопросы Delphi 3 17.05.2007 08:06