В настоящее время у меня есть простое работающее приложение формы 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;
}