22 / 21 / 8
Регистрация: 17.02.2011
Сообщений: 385
1
.NET 4.x

Глюки COM порта и DTREnabled

09.09.2013, 07:23. Показов 1209. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте товарищи.
У меня к вам вопрос. Для управления направлением в 485 порте я решил использовать вывод DTR COM порта. По началу я ложил этот порт в ноль, отправлял данные в Com, потом подымал (там инверсия). Но оказалось все не так просто, мое ПО, ложит DTR, тут же отправляет данные, и тут же подымает DTR, в результате данные не успевают отправиться. И тут вроде все понятно. Мое ПО, дает дровам команду на отправку данных, а моя программа, продолжает работать и делает это быстрей, чем отправка данных на скорости 9600. Я решил сделать по таймеру. Выставил таймер на 6 миллисекунд. И написал
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//Нажали кнопку передачи
private void buttonStartChinaEngine_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                RS_RX_TX.putDataTXmasByte(serialPort1, aRTXParentData.ARDecodeListByteDefault((int)ARTXParametr.AccelerationChinaEngine), this);//отдаем порт и метод который возвращает массив байтов по номеру в листе, с указанного места в листе, по количеству байтов начиная с указаного элемента в массиве
            }
            
            //serialPort1.DtrEnable = true; //сигнал на прием? готовы на прием, max 232 инвертирует в ноль
        }
//........
//Ушли в другой класс для передачи массива байтов
   public static void putDataTXmasByte(System.IO.Ports.SerialPort serialPort1, byte[] masTempByte, Form1 form1)//запись в порт
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.DtrEnable = false;
 
                form1.timerDTRDown.Enabled = false;
               
                form1.timerDTRDown.Enabled = true;
                serialPort1.Write(masTempByte, 0, masTempByte.Count());
            }
        }
 
//........
//Вернулись в класс Form1 и ждем когда сработает таймер чтобы погасить DTR
 private void timerDTRDown_Tick(object sender, EventArgs e)
        {
            //if (serialPort1.DtrEnable) serialPort1.DtrEnable = false;
            //else serialPort1.DtrEnable = true;
            serialPort1.DtrEnable = true;
            timerDTRDown.Enabled = false;
        }
Оказалось что это тоже не совсем удачная идея, не знаю ПОЧЕМУ, но DTR на осциллографе становится то коротким то длинным, случайным, и даже реагирующим на пустую кнопку на форме, в результате данные опять же уходят не все. То ли это непостоянство таймера, при увеличении интервала таймера вроде пропадает такой касяк как быстрая обрезка DTR, но я не могу сделать больше 6 милисекунд.
В чем проблема, я знаю способ дурацкий (может быть из-за непостоянства таймера), есть ли более мудрый способ?
Заранее благодарю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2013, 07:23
Ответы с готовыми решениями:

Глюки, опять глюки, и Яша иже с ними.
То ли я не тем пользуюсь, тол Яша со мной повоевать вздумал.... В общем несколько сайтов у Мну -...

Чтение из COM порта, При чтении из порта зависает read()
Каждому рано или поздно приходится программировать com порт. Вот и мой черед пришол. Я ужу умею:...

Глюки C:\
Сначала мне пишет, что на C 400 свободных метров, буквально через минуту сообщает о том, что...

Глюки
Google Chrome. Какая то фигня выскакивает, когда с сайта одного перенаправило по ссилке. Невозможно...

0
09.09.2013, 07:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2013, 07:23
Помогаю со студенческими работами здесь

Глюки
Блин Что делать? Мой комп глючит очень сильно, он еще никогда так не глючил. Сканировал DR Wev и...

Глюки с ИЕ
Привет. Не могу понять я включаю комп появляется рабочий стол,все ок, и тут без моего согласия...

Глюки
Кто с чем связывает последние глюки Яши?С конференцией с ВВ или как?У кого какие соображения по...

Глюки?
Яндекс не показывает ни проиндексированных страниц, ни беков, естественно. Смотрел на многих сайтах...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru