Подача команд по событию в другой программе

kkolorid
Offline
Зарегистрирован: 03.03.2019

Доброго времени суток. Подскажите пожалуйста, в какую сторону копать... Нобходимо запускать скетч (подавать адруине команды) не из ide, а из другой самописной программы. Например: я напишу программу, где есть кнопка "вкл/выкл светодиод" и по нажатию этой кнопки программа подаюет соответствующие команды на ардуину.

Интересует, как это делается, на каком языке нужно писать программу, какие библиотеки используются, а так же примерный код скетча, который будет эти нажатия обрабатывать. 

p.s. светодиод подключать я уже научился :)

b707
Онлайн
Зарегистрирован: 26.05.2017

Программу можно писать на чем угодно - какой вам язык ближе, на том и пишите. Я, к примеру, на Перле писал. Главное, чтобы в языке были средства работы с COM-портом.

Со стороны Ардуины вообще без разницыю что там на большом ПК запускается. Примеров получения данных и Serial в интернете сотни.

Пример кода с обоих сторон (первый попавшийся в гугле)

http://robocraft.ru/blog/1090.html

kkolorid
Offline
Зарегистрирован: 03.03.2019

C#:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            // Открываем порт, и задаем скорость в 9600 бод
            serialPort1.PortName = "COM3";
            serialPort1.BaudRate = 9600;
            serialPort1.Open();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            // При закрытии программы, закрываем порт
            if (serialPort1.IsOpen) serialPort1.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Передача данных из текстового поля в порт
            serialPort1.Write(textBox1.Text);
            // Прием данных и вывод его в окно программмы
            textBox2.Text = serialPort1.ReadLine();
        }
    }
}

Arduino:

int val; // Задаем переменную val для отслеживания нажатия клавиши
int ledpin = 2; // задаем цифровой интерфейс ввода/вывода - это наш светодиод

void setup ()
{
  Serial.begin (9600); // Задаем скорость обмена com-порта 9600
  pinMode (ledpin, OUTPUT); // Задаем ledpin как интерфейс вывода информации
}

void loop ()
{
  val = Serial.read (); // Считываем команду посланную с компьютера через консоль IDE Arduino
  if (val == '1') // Задаем букву условие,
{
digitalWrite (ledpin, HIGH); // Включаем светодиод 
delay (2000);
digitalWrite (ledpin, LOW); // Выключаем светодиод 
Serial.println ("Hello World!"); // Пишем в консоль "Hello World!"
}
}

 

Написал на С#. что-то не получается... Хотя через монитор порта в ide всё работает...

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Вы удивитесь, но на Ардуино надо писать на си.

kkolorid
Offline
Зарегистрирован: 03.03.2019

Скетч ардуино на С и написан, я говорил про программу на компе... Он на С#...

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Все равно вам надо подтянуть свой Си.

const byte ledpin = 2; // задаем цифровой интерфейс ввода/вывода - это наш светодиод
void setup (){
  Serial.begin (9600); // Задаем скорость обмена com-порта 9600
  pinMode (ledpin, OUTPUT); // Задаем ledpin как интерфейс вывода информации
}
void loop () {
  if (Serial.available() > 0) {
    if (Serial.read() == '1') {
      digitalWrite (ledpin, HIGH); // Включаем светодиод
      delay (2000);
      digitalWrite (ledpin, LOW); // Выключаем светодиод
      Serial.println ("Hello World!");
    }
  }
}

ПС: Рассматривайте это тестирочным скетчем. Но это совсем не эталон.

b707
Онлайн
Зарегистрирован: 26.05.2017

В коде ардуино на первый взгляд все нормально. Тем более, раз из монитора все работает - значит проблема в программе на C#

Первый вопрос - ардуина точно к COM3 подключена? - Обычно в винде это порты от COM7 до COM12

Подключите ардуину и запустите одновременно Ардуино ИДЕ и вашу программу. Подставьте в программу тот порт, что определился в Ардуино ИДЕ

kkolorid
Offline
Зарегистрирован: 03.03.2019

Я в С не шарю, но спасибо за оптимизацию кода )) Код из примера взял и он работаел через обычный монитор порта из arduino ide. Видимо, что-то в программе-оболочке на С# не так. Не могу понять что... Ошибок не даёт.

kkolorid
Offline
Зарегистрирован: 03.03.2019

Я через диспетчер устройст смотрел, когда подключал usb, именно 3ий загорается. Но но сейчас попробую ещё раз.

b707
Онлайн
Зарегистрирован: 26.05.2017

kkolorid пишет:

Я через диспетчер устройст смотрел, когда подключал usb, именно 3ий загорается. Но но сейчас попробую ещё раз.

тогда у вас в Ардуино ИДЕ тоже должен быть COM3 ?

kkolorid
Offline
Зарегистрирован: 03.03.2019

b707 пишет:

В коде ардуино на первый взгляд все нормально. Тем более, раз из монитора все работает - значит проблема в программе на C#

Первый вопрос - ардуина точно к COM3 подключена? - Обычно в винде это порты от COM7 до COM12

Подключите ардуину и запустите одновременно Ардуино ИДЕ и вашу программу. Подставьте в программу тот порт, что определился в Ардуино ИДЕ

Да, 3ий - могу получать оинформацию о плате, загружать скетчи...

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Arduino IDE Serial Monitor закрываете, когда своим сишарпом в порт мечете байты?

kkolorid
Offline
Зарегистрирован: 03.03.2019

sadman41 пишет:

Arduino IDE Serial Monitor закрываете, когда своим сишарпом в порт мечете байты?

Да. Я быстро понял, что они конфликтуют. Закрываю. Даже ide полностью закрывал.

kkolorid
Offline
Зарегистрирован: 03.03.2019

kkolorid пишет:

sadman41 пишет:

Arduino IDE Serial Monitor закрываете, когда своим сишарпом в порт мечете байты?

Да. Я быстро понял, что они конфликтуют. Закрываю. Даже ide полностью закрывал.

Кстати, важно. Если открыть программу, а потом попробовать открыть монитор в ide - ругается, что порт занят. Это уже что-то.. А ни чего страшного , что я порт открываю при запуске программы и её закрытии закрываю, соответственно? Не нужно ли перед каждым запросом так делать, что бы он просто так не висел? Глупости, но всё же..

kkolorid
Offline
Зарегистрирован: 03.03.2019

Может какие-то траблы с кодировкой?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Для передачи важно получить доступ к порту. А насколько часто вы его будете открывать-закрывать - разницы нет. Думаю, что тут надо присесть каким-нить программным сниффером на COM, иначе непонятно - шлёт сишарп что-то или не шлёт... Может он вообще в UTF-8 двубайтовые символы шлёт и тогда, понятное дело, что никакой '1' не вылезет из Serial.read(). Что-то там типа маршалинга должно быть перед отсылкой.

kkolorid
Offline
Зарегистрирован: 03.03.2019

sadman41 пишет:

Для передачи важно получить доступ к порту. А насколько часто вы его будете открывать-закрывать - разницы нет. Думаю, что тут надо присесть каким-нить программным сниффером на COM, иначе непонятно - шлёт сишарп что-то или не шлёт... Может он вообще в UTF-8 двубайтовые символы шлёт и тогда, понятное дело, что никакой '1' не вылезет из Serial.read(). Что-то там типа маршалинга должно быть перед отсылкой.

Попробовал на ардруине сделать просто "if (Serial.read()) {", что бы он на любое реагировал - чстетно :(

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Я на сишарпе не писатель, но попробуйте переменную типа byte слать, потому что char там двубайтовый.

kkolorid
Offline
Зарегистрирован: 03.03.2019

sadman41 пишет:

Я на сишарпе не писатель, но попробуйте переменную типа byte слать, потому что char там двубайтовый.

 

serialPort.Write() принимает значения только типа string...

b707
Онлайн
Зарегистрирован: 26.05.2017

попробуйте строчку 13 ардуино скетча поменять с if (val == '1') на

if (val)

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Начать лучше с ловли (Serial,avialable() > 0)

kkolorid
Offline
Зарегистрирован: 03.03.2019

b707 пишет:

попробуйте строчку 13 ардуино скетча поменять с if (val == '1') на

if (val)

Так и сделал. У меня сейчас такой листинг:

const byte ledpin = 2; // задаем цифровой интерфейс ввода/вывода - это наш светодиод

void setup ()
{
  Serial.begin (9600); // Задаем скорость обмена com-порта 9600
  pinMode (ledpin, OUTPUT); // Задаем ledpin 13 как интерфейс вывода информации
}

void loop ()
{
if (Serial.available() > 0) {
    if (Serial.read()) {
      digitalWrite (ledpin, HIGH); // Включаем светодиод
      delay (2000);
      digitalWrite (ledpin, LOW); // Выключаем светодиод
      Serial.println ("Hello World!");
    }
  }
}

 

kkolorid
Offline
Зарегистрирован: 03.03.2019

sadman41 пишет:

Начать лучше с ловли (Serial,avialable() > 0)

Через монитор в ide теперь после первой команды код выполняется циклично - работает. В оболочке-программе всё так же грусно...

b707
Онлайн
Зарегистрирован: 26.05.2017

kkolorid пишет:

Через монитор в ide теперь после первой команды код выполняется циклично - работает. В оболочке-программе всё так же грусно...

значит ваша программа вообще ничего не передает. Этот код должен реагировать на любой байт из Компорта

kkolorid
Offline
Зарегистрирован: 03.03.2019

Да, скорее всего. Однако порт открывается, как ым уже поняли. Значит программа функционирует, но до момента отправки, как бы это глупо не звучало :) Альтернатив записи в интернете не нахожу. Открывают по другому слегка - пробовал - всё так же.

kkolorid
Offline
Зарегистрирован: 03.03.2019

Есть такой пример кода на ардуину: 

const char StaPack = '#';              // Признак начала пакета данных
const char EndPack = '|';                                  // Признак окончания пакета данных
const uint16_t TimeOut = 500;                       // Отвалились через это время mls

#include <Servo.h>      //используем библиотеку для работы с сервоприводом
Servo servo;                  //объявляем переменную servo типа Servo

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  servo.attach(10);     //сервопривод на порту 10
  servo.write(0);
}

byte hexToByte (String StrControlHex) {         //0 : 255 (1 байт)

  uint8_t  HEX16 = 0;   // число 16-е из символа
  uint8_t  exp16 = 1;   // степень числа 16
  uint8_t  decBy = 0;   // число 10-е расчитанное без знака

  StrControlHex.remove(0, 2);           //отрезаем управляющие символы (2шт)
  int i = StrControlHex.indexOf('|');   //определяем дилнну строки
  if (i == -1) return 0;                          //фигня пришла а не байт
  if (i > 2)   return 0;                             //фигня пришла а не байт
  StrControlHex.remove(i, 1);           //отрезаем управляющие символы ('|')

  for (int j = StrControlHex.length() - 1; j >= 0; j--) {

    HEX16 = StrControlHex.charAt(j);

    if (HEX16 >= 48 && HEX16 <= 57) HEX16 = map(HEX16, 48, 57, 0, 9);
    if (HEX16 >= 65 && HEX16 <= 70) HEX16 = map(HEX16, 65, 70, 10, 15);
    if (HEX16 >= 97 && HEX16 <= 102) HEX16 = map(HEX16, 97, 102, 10, 15);

    decBy = decBy + HEX16 * exp16;
    exp16 = exp16 * 16;

  }
  return decBy;                         //возвращаем десятичное число 1 байт без знака
}

void loop() {

clearPack:                                // переходим сюда если приняли мусор /отвалились по таймауту/

  char   IncomChar;
  String StrControl = "";

  while (Serial.available() > 0) {            // выгребаем все байты которые пришли в буфер Serial

    IncomChar = Serial.read();

    if (IncomChar == StaPack) {           // пришел символ начала посылки данных
      StrControl += IncomChar;             // плюсуем пришедший символ к строке
      unsigned long currentTime = millis(); // записываем текущее время

      ReceptionPacket:                    // начало приема пакета

      if (Serial.available() > 0) {
        IncomChar = Serial.read();
        StrControl += IncomChar;          // плюсуем пришедший символ к строке
        if (IncomChar == EndPack) break;  // вываливаемся из цикла выгребания байт если приняли весь пакет
      }

      if (millis() - currentTime >= TimeOut) goto clearPack;  // отвалились по TimeOut

      goto ReceptionPacket;               // переход в начало приема пакета

    }

  }                                       // конец цикла по выгребанию байт

  if (StrControl != "") {

  //Serial.println(StrControl);           //печатаем принятый пакет отладка

  switch (StrControl.charAt(1)) {       //применяем полученую строку
    case 'w':
      digitalWrite(13, 0);
      break;
    case 'x':
      digitalWrite(13, 1);
      break;
    case 'A':
      servo.write(hexToByte(StrControl));
      break;
  }
  }
}

Там стерео открывается. Но мне не важен приём, даже запись не работает...

kkolorid
Offline
Зарегистрирован: 03.03.2019

Тема с кодом на с#, как у меня. У человека всё пишется, но не приходил ответ...

http://arduino.ru/forum/programmirovanie/c-i-arduino

Logik
Онлайн
Зарегистрирован: 05.08.2014

kkolorid, вам учится надо.

PS. Чего это тема из сериала "Что нажать на боинге чтоб взлететь?" не в песочнице?

kkolorid
Offline
Зарегистрирован: 03.03.2019

Logik пишет:

kkolorid, вам учится надо.

PS. Чего это тема из сериала "Что нажать на боинге чтоб взлететь?" не в песочнице?

Вообще-то всё, что можно было сделать - уже сделано. Осталось исправить ошибки. Чему "учиться"? Танцевать с бубном? Я владею программированием и способен самостоятельно диагностировать совой код, хоть я и не специализируюсь на языках семейства С, в этой проблеме явно есть какая-то особенность, о которой не пишут на каждом шагу.

PS. Мое нахождение тут, вроде, "учиться" и называется. Или как Вы себе обучение представляете? Сидеть в 4ех стенах, зубрить учебник моего возраста? Ух, немогу, меня с таких "помошников" аж бомбит. Лишь бы оставить что-нибудь в теме, не читая ветки. Ник свой прям в полном объеме оправдываете... (Сарказм)

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Ну вот такое гугля вываливает - там больше настроек для порта делается http://blablacode.ru/programmirovanie/489

kkolorid
Offline
Зарегистрирован: 03.03.2019
Начал мониторить COM порты.
 
С дефолтной командной строки arduino ide: (Запуск строки и её закрытие)
 
[04/03/2019 23:05:05] 
11 IRP_MJ_CREATE - Opens a COM port (COM3) 
    STATUS_SUCCESS 
        Opened by: 
            C:\Program Files (x86)\Arduino\java\bin\javaw.exe 
---------------------------------------------------------------------------------- 
[04/03/2019 23:05:09] 
13 IRP_MJ_CLOSE - Close a COM port (COM3) 
    STATUS_SUCCESS 
 
 
С программы-оболочки: (Запуск программы и её закрытие)
 
 
[04/03/2019 23:05:18] 
15 IRP_MJ_CREATE - Opens a COM port (COM3) 
    STATUS_SUCCESS 
        Opened by: 
            F:\Work\Development\VSProjects\WindowsFormsApp4\WindowsFormsApp4\bin\Debug\WindowsFormsApp4.exe 
---------------------------------------------------------------------------------- 
[04/03/2019 23:05:22] 
17 IRP_MJ_CLOSE - Close a COM port (COM3) 
    STATUS_SUCCESS 
---------------------------------------------------------------------------------- 
 
 
Затем пробуем отправить что-нибудь...
 
С дефолтной командной строки arduino ide:
 
[04/03/2019 23:08:32] 
595 IRP_MJ_WRITE - Request transfers data from a client to a COM port (COM3) - 2 bytes of 2 
    STATUS_SUCCESS 
            31 0a                                             1.               
---------------------------------------------------------------------------------- 
[04/03/2019 23:08:32] 
597 IRP_MJ_READ - Transfers data from a COM port to a client (COM3) - 14 bytes of 14 
    STATUS_SUCCESS 
            48 65 6c 6c 6f 20 57 6f 72 6c 64 21 0d 0a         Hello World!..   
---------------------------------------------------------------------------------- 
[04/03/2019 23:08:32] 
599 IRP_MJ_READ - Transfers data from a COM port to a client (COM3) 
    STATUS_SUCCESS 
---------------------------------------------------------------------------------- 
 

С программы-оболочки просто ни чего не проиходит...

Полный лог работы программы с расширенной информацией: (Открыл - нажал отправить - закрыл)

[04/03/2019 23:10:48] 

85 IRP_MJ_CREATE - Opens a COM port (COM3) 
    STATUS_SUCCESS 
        Opened by: 
            F:\Work\Development\VSProjects\WindowsFormsApp4\WindowsFormsApp4\bin\Debug\WindowsFormsApp4.exe 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
87 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_PROPERTIES - Request returns information about the capabilities of a COM port 
            wPacketLength        - 64 
            wPacketVersion       - 2 
            dwServiceMask        - 0x00000001 (SP_SERIALCOMM) 
            dwMaxTxQueue         - 0 
            dwMaxRxQueue         - 0 
            dwMaxBaud            - 0x10000000 (Programmable baud rates available) 
            dwProvSubType        - 0x00000001 (RS-232 serial port) 
            dwProvCapabilities   - 0x000000ff (DTR and DSR | Interval timeouts | Parity checking | Receive Line Signal Detect | RTS and CTS | XON and XOFF | Total elapsed timeouts | XON and XOFF flow control) 
            dwSettableParams     - 0x0000007f (Baud rate | Data bits | Handshaking (flow control) | Parity | Parity checking | Receive Line Signal Detect | Stop bits) 
            dwSettableBaud       - 0x1007ffff (75 bps | 110 bps | 134.5 bps | 150 bps | 300 bps | 600 bps | 1200 bps | 1800 bps | 2400 bps | 4800 bps | 7200 bps | 9600 bps | 14400 bps | 19200 bps | 38400 bps | 56K bps | 57600 bps | 115200 bps | 128K bps | Programmable baud rates available) 
            wSettableData        - 0x0000000f (5 data bits | 6 data bits | 7 data bits | 8 data bits) 
            wSettableStopParity  - 0x00001f07 (Even parity | Mark parity | No parity | Odd parity | Space parity | 1 stop bit | 1.5 stop bits | 2 stop bits) 
            dwCurrentTxQueue     - 0 
            dwCurrentRxQueue     - 68824 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
89 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_MODEMSTATUS - Request updates the modem status, and returns the value of the modem status register before the update 
            Modem Status - 0x00000000  
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
91 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_BAUD_RATE - Returns the baud rate that is currently set for a COM port 
            BaudRate - 9600 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
93 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_LINE_CONTROL - Request returns information about the line control set for a COM port 
            StopBits   - 0 (1 stop bit) 
            Parity     - 0 (NO_PARITY) 
            WordLength - 8 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
95 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_CHARS - Request returns the special characters that Serial uses with handshake flow control 
            EofChar   - 26 
            ErrorChar - 0 
            BreakChar - 0 
            EventChar - 26 
            XonChar   - 17 
            XoffChar  - 19 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
97 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_HANDFLOW - Request returns information about the configuration of the handshake flow control set for a COM port 
            ControlHandShake - 0x01 (SERIAL_DTR_CONTROL) 
            FlowReplace      - 0x80000000  
            XonLimit         - 34412 
            XoffLimit        - 8603 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
99 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_BAUD_RATE - Returns the baud rate that is currently set for a COM port 
            BaudRate - 9600 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
101 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_LINE_CONTROL - Request returns information about the line control set for a COM port 
            StopBits   - 0 (1 stop bit) 
            Parity     - 0 (NO_PARITY) 
            WordLength - 8 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
103 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_CHARS - Request returns the special characters that Serial uses with handshake flow control 
            EofChar   - 26 
            ErrorChar - 0 
            BreakChar - 0 
            EventChar - 26 
            XonChar   - 17 
            XoffChar  - 19 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
105 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_HANDFLOW - Request returns information about the configuration of the handshake flow control set for a COM port 
            ControlHandShake - 0x01 (SERIAL_DTR_CONTROL) 
            FlowReplace      - 0x80000000  
            XonLimit         - 34412 
            XoffLimit        - 8603 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
107 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_BAUD_RATE - Request sets the baud rate on a COM port. Serial verifies the specified baud rate 
            BaudRate - 9600 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
109 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_CLR_RTS - Request clears the RTS control signal  
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
111 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_CLR_DTR - Request clears the DTR control signal.  
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
113 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_LINE_CONTROL - Request sets the line control register 
            StopBits   - 0 (1 stop bit) 
            Parity     - 0 (NO_PARITY) 
            WordLength - 8 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
115 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_CHARS - Request sets the special characters that Serial uses for handshake flow control 
            EofChar   - 26 
            ErrorChar - 0 
            BreakChar - 0 
            EventChar - 26 
            XonChar   - 17 
            XoffChar  - 19 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
117 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_HANDFLOW - Request sets the configuration of handshake flow control 
            ControlHandShake - 0x00  
            FlowReplace      - 0x80000000  
            XonLimit         - 17206 
            XoffLimit        - 17206 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
119 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_BAUD_RATE - Returns the baud rate that is currently set for a COM port 
            BaudRate - 9600 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
121 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_LINE_CONTROL - Request returns information about the line control set for a COM port 
            StopBits   - 0 (1 stop bit) 
            Parity     - 0 (NO_PARITY) 
            WordLength - 8 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
123 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_CHARS - Request returns the special characters that Serial uses with handshake flow control 
            EofChar   - 26 
            ErrorChar - 0 
            BreakChar - 0 
            EventChar - 26 
            XonChar   - 17 
            XoffChar  - 19 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
125 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_GET_HANDFLOW - Request returns information about the configuration of the handshake flow control set for a COM port 
            ControlHandShake - 0x00  
            FlowReplace      - 0x80000000  
            XonLimit         - 17206 
            XoffLimit        - 17206 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
127 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_BAUD_RATE - Request sets the baud rate on a COM port. Serial verifies the specified baud rate 
            BaudRate - 9600 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
129 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_CLR_RTS - Request clears the RTS control signal  
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
131 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_DTR - Request sets DTR 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
133 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_LINE_CONTROL - Request sets the line control register 
            StopBits   - 0 (1 stop bit) 
            Parity     - 0 (NO_PARITY) 
            WordLength - 8 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
135 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_CHARS - Request sets the special characters that Serial uses for handshake flow control 
            EofChar   - 26 
            ErrorChar - 0 
            BreakChar - 0 
            EventChar - 26 
            XonChar   - 17 
            XoffChar  - 19 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
137 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_HANDFLOW - Request sets the configuration of handshake flow control 
            ControlHandShake - 0x01 (SERIAL_DTR_CONTROL) 
            FlowReplace      - 0x80000000  
            XonLimit         - 17206 
            XoffLimit        - 17206 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
139 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_DTR - Request sets DTR 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
141 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_TIMEOUTS - Request sets the timeout value's that the driver uses with read and write requests 
            ReadIntervalTimeout         - -1 
            ReadTotalTimeoutMultiplier  - -1 
            ReadTotalTimeoutConstant    - 1000 
            WriteTotalTimeoutMultiplier - 0 
            WriteTotalTimeoutConstant   - 1000 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
143 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_WAIT_MASK - Request configures Serial to notify a client after the occurrence of any one of a specified set of wait events 
            Mask - 0x000001fb (EV_BREAK | EV_CTS | EV_DSR | EV_ERR | EV_RING | EV_RLSD | EV_RXCHAR | EV_RXFLAG) 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:48] 
145 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_QUEUE_SIZE - Request sets the size of the internal receive buffer 
            InSize  - 4096 
            OutSize - 2048 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:52] 
148 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_WAIT_ON_MASK - Request is used to wait for the occurrence of any wait event specified by using an IOCTL_SERIAL_SET_WAIT_MASK request 
            Mask - 0x00000000  
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:52] 
149 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_SET_WAIT_MASK - Request configures Serial to notify a client after the occurrence of any one of a specified set of wait events 
            Mask - 0x00000000  
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:52] 
151 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_CLR_DTR - Request clears the DTR control signal.  
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:52] 
153 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_PURGE - Request cancels the specified requests and deletes data from the specified buffers 
            Flags - 0x0000000a 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:52] 
155 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3) 
    STATUS_SUCCESS 
        IOCTL_SERIAL_PURGE - Request cancels the specified requests and deletes data from the specified buffers 
            Flags - 0x00000005 
---------------------------------------------------------------------------------- 
[04/03/2019 23:10:52] 
157 IRP_MJ_CLOSE - Close a COM port (COM3) 
    STATUS_SUCCESS 
---------------------------------------------------------------------------------- 
 
Кто-нибудь шарит?
kkolorid
Offline
Зарегистрирован: 03.03.2019

Переписал программу в 5ый раз - заработало... :/ Всем спасибо.

Logik
Онлайн
Зарегистрирован: 05.08.2014

kkolorid пишет:

 Я владею программированием и способен самостоятельно диагностировать совой код

Ну ладно диагностировать хрустальным шаром. Но шоб совой! 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Logik пишет:

kkolorid пишет:

 Я владею программированием и способен самостоятельно диагностировать совой код

Ну ладно диагностировать хрустальным шаром. Но шоб совой! 


думаю, что это уже граничит с жестоким обращением с животными. вот!