RS-232 не работает на Windows 10 IOT - PullRequest
0 голосов
/ 04 июня 2018

В настоящее время у меня есть простое работающее приложение формы Windows, работающее на Windows 7, которое работает последовательно со сканером.Я хочу переключиться на платформу ioT для windows 10 и иметь возможность запускать то же приложение на ioT для windows 10 (сборка версии 14393).Когда я попытался запустить то же приложение на Windows 10 ioT, компьютер зависает, как только я пытаюсь открыть последовательный порт, чтобы начать связь.Однако я могу установить последовательную связь, используя кабель USB-RS-232 вместо использования COM-порта на ПК, используя то же приложение win form.

Далее попытался запустить пример последовательного приложения UWP здесь , который все еще не обнаружил никаких сканеров, подключенных через RS-232, но смог подключить USB к устройству RS-232.

Не поддерживается ли связь RS-232 в Windows 10 iot?Есть ли что-то, что мне не хватает?

Вот фрагмент кода, используемый для открытия портов (Примечание. Последовательные параметры для COM-порта заполняются в структуре из XML-файла):

            //Structures
           public struct SerialPortConfig
           {               

            public string COMPortNumber { get; set; }
            public string BaudRate { get; set; }
            public string DataBits { get; set; }
            public string Parity { get; set; }
            public string StopBits { get; set; }
            public string FlowControl { get; set; }
            public string StringLength { get; set; }
            public int CommInterval { get; set; }
            public int TimeOut { get; set; }
            public string TermChar { get; set; }
            public string[] StartChar { get; set; }
            public string Handshaking { get; set; }
            public int ReadBufferSize { get; set; }
            public int WriteBufferSize { get; set; }
            public bool DTREnable { get; set; }

        }

        public SerialCommDriver(SerialPortConfig serialPortConfig)
        {
            COMPort = new SerialPort();
            COMPort.PortName = "COM" + serialPortConfig.COMPortNumber;
            COMPort.BaudRate = Convert.ToInt16(serialPortConfig.BaudRate);
            COMPort.DataBits = Convert.ToInt16(serialPortConfig.DataBits);

            if (serialPortConfig.Parity == "Odd")
                COMPort.Parity = Parity.Odd;
            else if (serialPortConfig.Parity == "Even")
                COMPort.Parity = Parity.Even;
            else if (serialPortConfig.Parity == "None")
                COMPort.Parity = Parity.None;
            else if (serialPortConfig.Parity == "Mark")
                COMPort.Parity = Parity.Mark;
            else if (serialPortConfig.Parity == "Space")
                COMPort.Parity = Parity.Space;

            if (serialPortConfig.StopBits == "1")
                COMPort.StopBits = StopBits.One;
            else if (serialPortConfig.StopBits == "1.5")
                COMPort.StopBits = StopBits.OnePointFive;
            else if (serialPortConfig.StopBits == "2")
                COMPort.StopBits = StopBits.Two;
            else if (serialPortConfig.StopBits == "None")
                COMPort.StopBits = StopBits.None;

            COMPort.ReadTimeout = serialPortConfig.TimeOut;
            COMPort.NewLine = serialPortConfig.TermChar;

        }
       //End of Structures

     private static SerialCommDriver.SerialPortConfig _SerialPortAConfig;   

     ////Get COM port configuration from xml file  
     XmlNode node3 = document.SelectSingleNode("/LPN/ConfigScannerCOMPort");
    _SerialPortAConfig.COMPortNumber = 
                  node3.SelectSingleNode("COMPort").InnerText;
    _SerialPortAConfig.BaudRate = 
                  node3.SelectSingleNode("BaudRate").InnerText;  
     ................................                                                  
     ................................                                    
     ................................

    _SerialPortA = new SerialCommDriver(_SerialPortAConfig);                                                       

    //***********Subscribe to COM port events.
    _SerialPortA.COMPort.DataReceived += 
                       SerialPortA_NewDataReceived;

         public static void Start()
         {

         .........
         .........
            //Open COM ports.
            try
            {
                _SerialPortA.OpenPort();
                Debug_Log("Port from scanner (" + 
            _SerialPortA.COMPort.PortName + ") is open!", 
          _RunningAsService);



            }
            catch (Exception e)
            {
                Debug_Log("Unable to open required COM port(s). " + 
             e.ToString() + "", _RunningAsService);
                Exit(_RunningAsService);
            } 
            .......
            .......

         }

        public bool OpenPort()
        {
            if (!COMPort.IsOpen)
                COMPort.Open();
            return COMPort.IsOpen;
        }  
...