プリンターが使用するシリアルポートを開く
-
21-08-2019 - |
質問
ESC/P コードを送信しています (http://webpages.charter.net/dperr/links/esc_p83.htm) を、COM1 に接続されている Epson LX-300 プリンタに送信します。この PC には、他の人が必要とする正しいドライバがすでにインストールされています。
そこで私はこれを書きました:
using System.IO.Ports;
public class EpsonPrint {
private char esc = (char)27;
private char ff = (char)12;
public static void Main (string[] args) {
new EpsonPrint();
}
public EpsonPrint() {
SerialPort port = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
port.Open();
port.Write(esc+"@hola mundo!"+ff);
port.Close();
}
}
そして、それは機能しますが、別のポートまたは他のものを指すEpsonドライバーでのみ機能します。COM1を使用させると、上記のコードがスローされるためです。
「指定されたポート名が COM/com で始まっていないか、有効なシリアル ポートに解決されません。」
記録のために言っておきますが、これは「ポートがすでに開いています」エラーではありません。
解決
COM1はプリンタードライバーにより保持されます。これにより、アプリケーションによるポートのオープンが防止されます。プリンタードライバーのプロパティでプリンターポートをCOM1以外に切り替えてみてください。これ以降、アプリケーションは COM1 を自由に使用できるようになります。
他のヒント
私はあなたがドライバーにしていないポートに送信する必要があると思います。この記事をチェックアウト:
所属していません StackOverflow