4

serialPort.Open() 行に「CreateFile Failed: 161」が表示されます。

. . .
      MessageBox.Show(string.Format("Made it into PrintUtils.PrintBarcode()"));
using (SerialPort serialPort = new SerialPort())
{
    MessageBox.Show("Made it into using statement in PrintUtils.PrintBarcode()"); 
    serialPort.BaudRate = 19200;
    serialPort.Handshake = Handshake.XOnXOff;
    serialPort.DataBits = 8;
    serialPort.Parity = Parity.None;
    serialPort.StopBits = StopBits.One;
    serialPort.PortName = "COM1"; // Is this what it wants?
    MessageBox.Show("Made it beyond the protocol assignments in PrintUtils.PrintBarcode()"); 

    serialPort.Open(); // <-- This causes "CreateFile Failed: 161"
    MessageBox.Show("Opened the serial port in PrintUtils.PrintBarcode()"); 

    Thread.Sleep(2500); // I don't know why this is needed, or if it really is...

    // Try this first:
    serialPort.WriteLine("! 0 200 200 210 1");
    MessageBox.Show("Sent the first line in PrintUtils.PrintBarcode()"); 
    serialPort.WriteLine("TEXT 4 0 30 40 Bonjour la Monde"); //Hola el Mundo --- Hallo die Welt
    MessageBox.Show("Sent the TEXT line in PrintUtils.PrintBarcode()"); 
    serialPort.WriteLine("FORM");
    MessageBox.Show("Sent the FORM line in PrintUtils.PrintBarcode()"); 
    serialPort.WriteLine("PRINT");
    MessageBox.Show("Sent the PRINT line in PrintUtils.PrintBarcode()"); 
    // or (if WriteLine does not include a carriage return and line feed):
    //              serialPort.Write("! 0 200 200 210 1\r\n");
    //              serialPort.Write("TEXT 4 0 30 40 Bonjour la Monde\r\n"); //Hola el Mundo --- Hallo die Welt
    //              serialPort.Write("FORM\r\n");
    //              serialPort.Write("PRINT\r\n");

    serialPort.Close();
    MessageBox.Show("Closed the port in PrintUtils.PrintBarcode()"); 
}

私が見る最後の「デバッグメッセージ」は「PrintUtils.PrintBarcode()のプロトコル割り当てを超えました」であるため、私はそれを知っています

プロトコルの 1 つが間違っているか、フォーマットが間違っているためですか? または、必要なプロトコルの割り当てを省略しましたか?

4

1 に答える 1

5

エラー161はThe specified path is invalid.、ポート名が無効であるために取得していることを意味します。

Windows CEでは、ポート名(実際にはすべてのドライバー名)の末尾に「:」文字を付ける必要があるため、コードは次のようになります。

serialPort.PortName = "COM1:"; 
于 2013-02-08T00:04:09.360 に答える