Czy to tylko ja, czy jest to błąd?Windows UWP Windows.Devices.SerialCommunication.SerialDevice Nie działa
serialPort = await SerialDevice.FromIdAsync(Id);
serialPort
zawsze jest null, nawet podczas Id
nie jest.
Potrzebuję tego działa. Na razie właśnie piszę bardzo "szybki i brudny" kod do testowania komunikacji szeregowej z uniwersalnej aplikacji Windows 10. Debugowałem zarówno w x86, jak i x64 z tym samym wynikiem.
Oto gdzie jestem teraz, ale nie mogę iść bardzo daleko bez SerialPort tworzony ....
public class SerialComm
{
private SerialDevice serialPort;
DataWriter dataWriteObject = null;
DataReader dataReaderObject = null;
public async void StartTest()
{
var deviceSelector = SerialDevice.GetDeviceSelector("COM3");
var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(deviceSelector);
var myCurrentDevice = myDevices[0];
string Id = myCurrentDevice.Id.ToString();
try
{
serialPort = await SerialDevice.FromIdAsync(Id);
}
catch (Exception)
{
throw;
}
StringBuilder commandBuilder = new StringBuilder();
while (true)
{
var rBuffer = (new byte[1]).AsBuffer();
await serialPort.InputStream.ReadAsync(rBuffer, 1, InputStreamOptions.Partial);
if ((char)rBuffer.ToArray()[0] != '\n')
{
commandBuilder.Append((char)rBuffer.ToArray()[0]);
}
else
{
string temp = "";
try
{
temp += rBuffer.ToString();
}
catch (Exception)
{
temp = "Error";
}
commandBuilder.Append(temp);
}
string stringToDisplay = commandBuilder.ToString();
}
Dzięki za pomoc i rady ....
Sprawdzanie "oficjalne" próbka SerialSample znaleźć na GitHub, to robi to samo. Dotyczy to wersji 10.0.10240.0 i systemu Windows 10 w wersji 10240 – BernardG
Dokumenty są całkowicie zbyt tandetne, aby uzyskać świadomą odpowiedź. Przypuszczam, że tak, ponieważ nie ma jawnej metody Open(), nie można jej uzyskać, ponieważ urządzenie jest już w użyciu. Lub zapomniałeś poprosić o możliwość "komunikacji szeregowej" w manifeście. –
Dziękuję za odpowiedź, Hans. Powinienem był powiedzieć, że dodałem zdolność do manifestu. Należy również pamiętać, że ta sama funkcja daje również zerową wartość w próbce wykonanej i dystrybuowanej przez Microsoft, więc nie jest to tylko mój kod. Zgaduję, że gdyby urządzenie było już w użyciu, wygenerowany zostałby wyjątek, a nie zwrócono wartości zerowej (domyślnie ..) – BernardG