J'essaie d'écrire une application personnalisée pour un périphérique GPS, et j'ai besoin de lire les données GPS.Windows CE et les problèmes de port série (impossible d'ouvrir le port)
Le problème que je suis face est que je ne peux pas ouvrir le port GPS. Je sais quel COM il est, et je connais le débit en bauds, mais je reçois un IOException
chaque fois que j'arrive à la méthode Open()
.
port = new SerialPort("COM6", 9600);
port.ErrorReceived += new SerialErrorReceivedEventHandler(port_ErrorReceived);
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
try
{
port.Open();
}
catch (IOException ex)
{
SetLabel(label1, ex.Message);
}
Trace de la pile:
at System.IO.Ports.SerialStream.WinIOError(Int32 errorCode, String str)
at System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeout, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNull, Byte parityReplace)
at System.IO.Ports.SerialPort.Open()
at PortTest.Form1.button1_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.ButtonBase.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
at System.Windows.Forms.Application.Run(Form fm)
at PortTest.Program.Main()
Ce qui rend les choses tout à fait exaspérant est qu'un échantillon natif C++ codes que je trouve fonctionne, ouvre le port sans problème, et je ne pouvais même coup d'oeil à certains des Chaînes NMEA. Mais tout cela a été fait en utilisant des exemples de codes C++ fournis sur le Web, et je ne me sens pas assez compétent pour baser toute mon application dans ce langage. Je voudrais m'en tenir à C#.
Y at-il d'autres façons d'ouvrir un port en C# en utilisant la classe SerialPort
dans Windows CE? Ou peut-être utiliser d'autres classes entièrement?
Sinon, est-ce qu'il y a peut-être une DLL écrite en C++ qui permet la même fonctionnalité (ou similaire) disponible pour Windows CE?
EDIT (pour plus de détails): L'exception que je reçois est juste que. IOException. Le débogueur Visual Studio ne me dit rien de plus. Je ne sais pas si cela est dû à un réglage Windows CE bâclé sur l'appareil. Je me souviens d'un problème avec les chaînes d'exception sur mon appareil Windows Mobile, mais cela a été résolu en ajoutant une référence à System.SR
, que j'ai déjà essayé dans ce cas. S'il y a un truc qui me manque en ce qui concerne Windows CE et les messages d'exception, j'aimerais aussi le savoir. ;)
J'ai aussi essayé d'utiliser le code sans événements et en spécifiant plusieurs paramètres dans le constructeur, et je avais toujours obtenir l'exception lorsque vous essayez d'ouvrir le port.
Enfin, j'ai déjà essayé d'ajouter un : au nom du port, ce qui n'a pas aidé non plus.
N'utilisez pas de balises dans le sujet. Et vérifiez l'orthographe. S'il vous plaît. Bravo :) – abatishchev
Je n'avais pas l'intention que ce soit une étiquette en tant que telle, mais la clarté concernant le titre. Mais tu as raison. Cependant la raison pour laquelle j'ai reculé était parce que vous avez écrit "probles" dans le titre ...>. < – Shaamaan