シリアル通信(CAN)の送受信不正 – プログラミング – Home

シリアル通信(CAN)の送受信不正
 
通知
すべてクリア

シリアル通信(CAN)の送受信不正

固定ページ 1 / 2

リサリサ
 リサリサ
(@リサリサ)
ゲスト
結合: 9年前
投稿: 8
Topic starter  

初めして、シリアル通信(CAN)で
1、データが受信できない場合
2、送受信の順序が乱れる
現状が発生します。

PCと対向機器Aと下記リンクのデバイスを繋ぎ、通信ライン上をバスアナライザでウォッ
チしています。

具体的には、
http://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=apgdt002
を利用し通信しており、
リンク先のCAN BUS Analyzer Install v2.0をインストールするとCAN BUS Analyzerとい
うツールの
ソースコードが展開され、それを参考にVC++2008 MFC環境で実装しました。

制御方法は、まず、
USBのハンドル取得を行いました。

そして、Threadを起動し、Thread内で、
WinUsb_WritePipe()
WinUsb_ReadPipe()
を交互にコールしています。

このAPIはWinUsb_WritePipeしても送信されず、
WinUsb_WritePipeして、WinUsb_ReadPipeすると送信されます。
そして、WinUsb_ReadPipeにてリードしたバッファに、送信,受信の識別子があり、
それで送信,受信を判定します。

受信識別子が読めると、バッファをチェックし所望のデータなら、
WinUsb_WritePipeにて送信データを書き込む。。を繰り返しています。

1、が発生する場合は、バスアナライザ上では、所望の受信データが見えるのですが、
 WinUsb_ReadPipeしてたとき、受信識別子がないときがあります。
 
2、が発生する場合は、上記制御しているにも関わらす、送信識別子が連続して読めま
す。
 バスアナライザ上も、連続で送信されています。

文章だけだと分かり辛いかもしれませんが、
アドバイスいただけらうれしいです。

気になる現象として、WinDDK(7600,16385,1)をインストール後から、
CFileDialogでopenするとハンドル例外が発生するようになり、以下の対処を行いまし
た。
環境の問題でしょうか。。
http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+201205/12050011.txt

どうぞ、よろしくお願いいたします。

----- 環境 -----
Windows7 Professional 32bit SP1
Visual Studio 2008
WinDDK(7600,16385,1)
-> http://www.devdrv.co.jp/windows/を参考にインストール
----------------


引用解決済
トピックタグ
リサリサ
 リサリサ
(@リサリサ)
ゲスト
結合: 9年前
投稿: 8
Topic starter  

これだけじゃ、アドバイスしようがありませんよね。。

ソースコードを貼らせていただきます。
(準備中です。。)


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

マイクロチップジャパンに問い合わせてみるといいと思います。
意外と親切です。


返信引用
リサリサ
 リサリサ
(@リサリサ)
ゲスト
結合: 9年前
投稿: 8
Topic starter  

ITOさん

コメントどうもありがとうございます。

問い合わせ中ですが、こちらの質問の仕方が良くないのか、
なかなか回答をもらえない状況です。

マイクロチップジャパン様はそちらの環境(プログラムのミスも含めて)の
問題では?
などと思われているのでしょうか。。

こちらの環境の問題、例えば.netのバージョンが問題とか、
プログラムの問題が本当にないか等、確認したく
このサイトに投稿した次第です。

非常に困っています。。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

うーーん、
 そもそも、CAN BUS Analyzer をインストールするのにWinDDK(7600,16385,1)を
インストールして、ソフトをコンパイルしなければいけないのかわからないですね。
会社にもUSBアナライザーがありますが、スタンドアロンで動きますね。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

DDKは、winxpのときのものですね。
今は、WDKですね。最新バ-ジョンはver8.1ですが、
VC++2008なのでver7.XXあたりでしょうか?
Readmeに、
provided in the Windows Driver Kit (WDK) version 7.0.0 (7600.16385.0).
ってありますね。
WDK 7.00にインストールし直したほうがいいですね。
VC++2008が対応しているか調べたほうがいいですね。

netのバージョンは、「dotnetfx2_0.exe」があるので、Ver2.0以上でしょうね。
windows7インストール時のでいいと思います。

うーーん、そもそも netのバージョンがver2.0とは開発環境はどうなんでしょうね?


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

追記です。
>最新バ-ジョンはver8.1ですが
現状は調べてないです。


返信引用
リサリサ
 リサリサ
(@リサリサ)
ゲスト
結合: 9年前
投稿: 8
Topic starter  

ITOさん

コメントありがとうございます!

分かりにくくてごめんなさい。

前述のリンク先から、
Microchip CAN BUS Analyzer v2.0 Installer.zip
をダウンロードし、解凍します。すると、
Microchip CAN BUS Analyzer v2.0 Installer/Dotnet
Microchip CAN BUS Analyzer v2.0 Installer/Driver
Microchip CAN BUS Analyzer v2.0 Installer/Microchip CAN BUS Analyzer v2.0 Instal
ler.exe
ができます。
そして、上記Driverをインストールし、Microchip CAN BUS Analyzer v2.0 Installer.ex
e
を実行します。

CAN BUS Analyzer を使うだけならこれでOKなんです。

CAN BUS Analyzer をインストールすると、以下にソースファイル等が展開されます。
C:\Program Files (x86)\Microchip Technology Inc\CAN BUS Analyzer v2.0\SourceCode
\PC Application

そのソースをビルドしようとすると、
1>c:\xxxx\work\sourcecode\pc application\Form1.h(80) : fatal error C1083: includ
e ファイルを開けません。'Winusb.h': No such file or directory
とエラーが出るため、
VC++2008の
構成プロパティー->C/C++->追加のインクルードディレクトリに
C:\WinDDK\7600.16385.1\inc\api
C:\WinDDK\7600.16385.1\inc\ddk
を追加しました。

>会社にもUSBアナライザーがありますが、スタンドアロンで動きますね。
すみません、どういう意味でしょうか。
ごめんなさい。

どうぞよろしくお願いいたします。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

>すみません、どういう意味でしょうか。

>CAN BUS Analyzer を使うだけならこれでOKなんです。
これで疑問が解けました。
CAN BUS Analyzerとして使う場合もコンパイルしないといけないかと思っていました。

> VC++2008の
> 構成プロパティー->C/C++->追加のインクルードディレクトリに
> C:\WinDDK\7600.16385.1\inc\api
> C:\WinDDK\7600.16385.1\inc\ddk
> を追加しました。
これでコンパイラーは通りましたか?

>Microchip CAN BUS Analyzer v2.0 Installer.zip
を解凍すると、「Driver」の中の「readme.txt」に
>provided in the Windows Driver Kit (WDK) version 7.0.0 (7600.16385.0).
とあります。
WinDDK(7600,16385,1)でなく
Windows Driver Kit (WDK) version 7.0.0 (7600.16385.0).
をインストールしなければいけなかったのではないでしょうか?


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

修正です。
誤 これでコンパイラーは通りましたか?

正 コンパイルのエラーはなくなりましたか?


返信引用
リサリサ
 リサリサ
(@リサリサ)
ゲスト
結合: 9年前
投稿: 8
Topic starter  

ITOさんおはようございます。

>これでコンパイラーは通りましたか?
すみません、情報不足でした。
'_In_' : 定義されていない識別子です。
など大量のエラーが出たため、対処方法をWebで検索し、
追加のインクルードディレクトリに
$(VCInstallDir)include
$(VCInstallDir)atlmfc\include
C:\WinDDK\7600.16385.1\inc\api
C:\WinDDK\7600.16385.1\inc\ddk
を追加しました。
するとビルドは通りました。

>Windows Driver Kit (WDK) version 7.0.0 (7600.16385.0).
そうですね、試してみます。

ご回答ありがとうございます、感謝いたします!


返信引用
リサリサ
 リサリサ
(@リサリサ)
ゲスト
結合: 9年前
投稿: 8
Topic starter  

ITOさん
お世話になります。

WDK7.0.0を探してインストールし、
追加のインクルードディレクトリに
C:\WinDDK\7600.16385.0\inc\api
C:\WinDDK\7600.16385.0\inc\ddk
を設定し試しましたが、

2、送受信の順序が乱れる

は、発生してしまいました。
1、データが受信できない場合
は未確認です。

残念です。。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

う--ん、
あとは、
  相手との通信手順の不具合かな?
と思います。
 相手に機器担当とデバッグしてみたらどうでしょうか?


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

失礼しました、
 相手の機器担当とデバッグしてみたらどうでしょうか?
ですね。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

うーーん
どんな様子ですか?

ドライバー部分は、ビルドしたあるのを使うわけにはいけないですか?
あと、いまいち、コンパイルして使わないといけないか分からないです。

CAN I/Fの代わりに使うのですか?


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました