良い一日
私はcomport "COM1"にデータを送信しようとしています。汎用プリンタ ドライバは、comport "COM1" にセットアップされます。このポートにデータを送信すると、実行時エラー「8015: 通信状態を設定できませんでした。1 つ以上の無効な通信パラメータが存在する可能性があります」が表示されます。そのエラー メッセージに対して [OK] をクリックすると、実行時エラー「8018: ポートが開いている場合にのみ有効な操作」という別のエラーが表示されます。コマンドプロンプトで「copy C:\textfile.txt COM1」コマンドを使用してテキストファイルをポートにコピーでき、問題なく動作するため、この問題は解決できると思います。それが私の状況です。
私が試した方法は次のとおりです。
- MSComm コントロールを使用する (上記のエラーが発生する)
- Windows API 呼び出しを使用する (別のエラー「無効な関数」が発生する) API リンク: http://www.thescarms.com/vbasic/CommIO.aspx
- shell 関数を使用して、「copy」コマンドで cmd.exe をシェルします (この方法は必要なときに機能します)。
- ポートにコピーするときに動作しない VB6e FileCopy() 関数を使用する
この質問に答えることができる人は、COM ポート通信に関する詳細な情報を知っている人であり、Windows のコピー コマンドに関する詳細な情報を知っている人だと思います。
私はいくつかのフォーラムを読みました(私はあまりにも多くのことを経験しました)。プラグを取り外してプラグを差し込むと、この問題は解決します。私はまだそれを試していませんが、デバイスの電源を切って、元に戻そうとしましたが、同じことだと思います.
誰かがこの問題を助けることができれば、それは非常に高く評価されます
興味深いかもしれないリンクは次のとおりです。
ありがとう、
ヨルゲン
ビーナーの要求に応じて:
これが私が使用しているコードのスニペットです。
Private Sub Initialize_COMPort()
On Error GoTo COMPort_Error
If MSComm1.PortOpen Then
MsgBox "Port is opened"
MSComm1.PortOpen = False
End If
MSComm1.Settings = "9600,n,8,1"
MSComm1.CommPort = Val(CbCOMPorts.ListIndex) + 1
MSComm1.PortOpen = True
MSComm1.RThreshold = 1
MSComm1.Handshaking = comXOnXoff
Exit Sub
COMPort_Error:
MsgBox Err.Number & " - " & Err.Description, vbCritical + vbOKOnly, "Port Tester", Err.HelpFile, Err.HelpContext
End Sub
エラーは次の場合に発生します。
MSComm1.PortOpen = True
実行されます。
@Hrqlsコードに感謝しますが、あなたがくれたコードは心に似ており、実行してもエラーは解決しません。エラーは同じステートメントで発生します
.PortOpen = True
@Hrqls以前にプリンターコントロールを使用したことはありませんが、このデバイスは実際にはテキストプリンターではなく、カードエンボスです。私が現在取り組んでいるプログラム「Matica Z3i AF」エンボス加工機は、カードをエンボス加工するために使用されます。
現在実施されている方法は、エンボッサーを使用することです。これは基本的に、カード情報を含むテキスト ファイルの「コピー」コマンドをエンボッサーが理解できる形式で印刷に実行するバッチ ファイルです。
それまではプリンター コントロールを使用してみます。回答に感謝します。問題が解決した場合は、全員に最新情報を提供します。