問題タブ [multidrop-bus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
embedded - マルチドロップ バス開発のヘルプはありますか?
グーグルで検索できるわけではありませんが...自動販売機で一般的に使用されているマルチドロップバスのオープンソースコード/開発フレームワーク/テストソフトウェア/などを知っている人はいますか?
c# - COM ポートを使用したコイン チェンジャーとのやり取り
MEI Cashflow E7900
デバイスをシリアル ポートに接続するためのコイン チェンジャーと MDB アダプターがあります。アダプタを販売してくれたショップでは、Delphi で作成され、Borland Delphi v6.0 でコンパイルされたテスト アプリケーションも提供されました。それは完全に機能しますが、何らかの理由で私のコードは機能しません。
MDB を使用する場合POLL
、200ms ごとにコマンドを送信する必要があります。すべてが OK の場合、コイン チェンジャーは を送信しますACK
。Delphi アプリケーションを使用して送信すると、セッションは次のようになります。
=> 0x0B* 0x0B (星印はマークに設定されたパリティを意味します。デフォルトのパリティはスペースです)
<= 0x00
だから、すべてがOKです。それが私が期待していることです。POLL
C# アプリケーションで送信すると、次のようになります。
=> 0x0B* 0x0B
<= 0x3F 0x00
時々、コイン チェンジャーが意味をなさないメッセージを送ってきます。このような有効な応答はありません0x3F 0x11
。POLL
このような応答を受け取ったときに Delphi アプリケーションを実行すると、有効なACK
応答が得られます。ポート構成自体を含め、送信されたデータに違いがないことを確認するためにCOMポートスニファーを使用していましたが、異なる応答が得られ続けています。
テスト アプリケーション (Delphi) のソース コードは次のとおりです。
完全なコード リストはこちらで入手できますが、ここで提供されているコードで十分です。
私のコード (C#):
Delphi アプリケーションでの Poll コマンド:
私のアプリケーションでコマンドをポーリングします。
0x3F
受信したデータは、最初以外はほぼ同じようです。しかし、デバイスの動作も異なり、PC に接続されていないようです。C# アプリケーションを使用すると「マシンによって無効化されました」と表示され、Delphi アプリケーションを使用すると「ステータス OK」と表示されます。これは .NET Framework が原因で発生している可能性がありますか? COM ポートの相互作用のためのライブラリーの名前はすべて承認されます。
なぜ私は異なる反応を得るのですか?ここの誰かが私を助けてくれることを願っています。前もって感謝します。また、この巨大な質問を読んでくれてありがとう。
multidrop-bus - MDB プロトコルを使用する自動販売機用に何を開発する必要がありますか?
自動販売機を使ったプロジェクトがあります。ドキュメントによると、このマシンは MDB プロトコル (自動販売機の標準プロトコル) を使用しています。
マシンとやり取りするアプリケーションを開発するにはどうすればよいですか?たとえば、製品の価格を変更するにはどうすればよいですか?
どのようなツールと API が必要ですか?
serial-port - マルチドロップ バスを介したシリアル デバイスとの通信
シリアル通信初心者です。プロジェクトでは、自動販売機用のソフトウェアを開発する必要があります。自動販売機は、基本的にホスト コンピューター (Windows XP マシン) とさまざまな周辺機器で構成されます。これらの周辺機器の 1 つがコイン アクセプターです。自動販売機のドキュメントによると、ホスト コンピューターはシリアル ポートを使用してコイン アクセプターと通信します。私が持っている唯一のドキュメントは、「Multi-Drop Bus / Internal Communication Protocol」と呼ばれるこのドキュメントです (私が持っているバージョンはここにあります: http://www.coin-acceptor.com.cn/Upload/EditorFiles/technicalfile/Mdb_version_4 -2.pdf )。
ドキュメントによると、9600 のボーレート、1 スタート ビット、1 ストップ ビット、1 モード ビット、および 8 データ ビットを使用してシリアル ポート接続を作成する必要があるようです (リンクされたドキュメントの 29 ページ)。自動販売機のドキュメントには、コイン アクセプターが COM ポート 6 にあると記載されています。HyperTerminal と Putty を使用して、このような接続を作成しようとしました。私の最初の質問は次のとおりです。
- この MDB 'プロトコル' をサポートするデバイスへの接続を正しく作成するにはどうすればよいですか? Putty と HyperTerminal では、「モード ビット」を設定できません。このドキュメントには、フロー制御とパリティ ビットに関する記述はありませんでした。Putty または HyperTerminal を使用してこれを行うことはできますか? それとも、MDB 経由で通信するために他のツールが必要ですか?
2 番目の質問は、デバイスにコマンドを送信する方法についてです。コマンドを調べたところ、RESET コマンドがありました。ドキュメントによると、RESET コマンドを受信すると、デバイスは自身をリセットし、ACK で応答する必要があります。ドキュメントの 33 ページと 63 ページによると、コイン アクセプタに RESET コマンドを送信したい場合は、シリアル ラインで HEX 値 08H を送信できます。33 ページには、コイン チェンジャーがアドレス 08H から 10H に送信されたコマンドをリッスンすることが記載されています (ドキュメントを正しく解釈している場合)。ページ 63 には、RESET コマンドが 08H でデータ バイトがないと記載されています。パテに「08H」と入力して「Enter」を押すだけでいいですか?このコマンドをデバイスに送信するには? または、このコマンドをシリアル回線経由でデバイスに送信するにはどうすればよいですか? これは正しいアプローチですか、それとも完全に間違った場所を探していますか? 自動販売機のドキュメントには、コインアクセプター用のこのドキュメントのみが含まれています。お手伝いありがとう!
敬具
クリス
arduino - USART経由でMDBプロトコルを介して自動販売機と通信する際のArduinoのTXラインに関する問題
Arduino Mega の助けを借りて MDB プロトコルを使用して自動販売機と通信しようとしていますが、部分的に成功しています。
私が使用している回路はここに添付されています
回路図を以下に示しますが、
Arduino Mega はシリアル 1 を介してラップトップと通信し、自動販売機の通信は Arduino Mega のシリアル 2 を介して行われます。
通信にはUSARTを使用しています。
私が直面している奇妙な問題は、茶色のワイヤ A と B が最初に接続されていない場合 (Arduino TX を自動販売機 RX に接続している場合) にのみ、自動販売機との通信がデータの送信を開始することです。自動販売機からのデータを確認したら、ワイヤー A と B をショートさせ、Arduino は自動販売機にもデータを送信し始めます。
しかし、自動販売機の起動時にワイヤ A と B が接続されている場合、自動販売機は Arduino にデータを送信しないため、通信は行われません。ワイヤーAとBを毎回手動で接続せずに動作させたいです。
オプトカプラPC817Cを置き換えてみました
- PC814
- 4N35
- 6N137 高速オプトカプラ
ヘックスインバーターを交換してみた
- 74HC04AP
ワイヤーAとBの間にメカニカルリレーとソリッドステートリレーを入れてみて、外部入力を介して接続しようとしましたが、何も起こりません
.ワイヤーAとBの間にスイッチとしてフォトカプラを追加し、ファームウェアで制御しようとしました.
16 進インバーターを 16 進バッファー HCF4050BE と NOT ゲートに置き換えてみましたが、上記のコンポーネントの組み合わせに関係なく、問題は同じままです。自動販売機。
MateDealer のコード
を使用しています。
この手動プロセスを自動化したいので、そのための簡単なソリューションが必要です。