OSFP-EVB
aliexpressで安い、OSFP対応のEVBを見つけて購入。
https://ja.aliexpress.com/item/1005006306962550.htm
基板上に乗っているUSB/I2Cデバイスは、CH341T。ドライバを検索する。
https://www.wch-ic.com/downloads/CH341DS1_PDF.html
https://www.wch-ic.com/downloads/CH341PAR_EXE.html
「デバイスマネージャー」でinterface/USB-EPP/I2C..CH341Aと現れる
https://www.wch-ic.com/downloads/CH341PAR_ZIP.html
DLL library
Sample programs
https://www.onetransistor.eu/2017/09/ch341a-usb-i2c-programming.html
http://www.neko.ne.jp/~freewing/software/wch_ch341a_i2c_control_windows_visual_c/
https://github.com/command-tab/ch341eeprom/tree/master
c# samples
https://learn.microsoft.com/ja-jp/dotnet/iot/tutorials/temp-sensor
#pragma comment(lib,"./CH341DLLA64.LIB")
//BOOL WINAPI CH341ReadI2C( // Reads one byte of data from the I2C interface//ULONG iIndex, // Specify the CH341 device serial number//UCHAR iDevice, // The lower 7 bits specify the I2C device address//UCHAR iAddr, // Specifies the address of the data unit//PUCHAR oByte ); // Point to a byte unit, used to save the read byte data
int main(){ int i; UCHAR data;
std::cerr << "SFP/QSFP/OSFP EEPROM A0h dump via CH341\n"; // Device Index Number ULONG iIndex = 0;
// Open Device HANDLE h = CH341OpenDevice(iIndex);
// DLL verison ULONG dllVersion = CH341GetVersion(); std::cerr << "DLL verison " << dllVersion << "\n";
// Driver version ULONG driverVersion = CH341GetDrvVersion(); std::cerr << "Driver verison " << driverVersion << std::endl;
// Device Name PVOID p = CH341GetDeviceName(iIndex); std::cerr << "Device Name " << (PCHAR)p << std::endl;
// IC verison 0x10=CH341,0x20=CH341A,0x30=CH341A3 ULONG icVersion = CH341GetVerIC(iIndex); std::cerr << "IC version " << std::hex << icVersion << std::endl;
// Reset Device BOOL b = CH341ResetDevice(iIndex); std::cerr << "Reset Device " << b << std::endl;
for (i = 0; i < 0xff; i++) { BOOL b = CH341ReadI2C(iIndex, 0x50, i, &data); printf(" %02X :", (0xff &(char)data)); }}
Windowsアプリケーションの開発環境
Windows GUIのアプリをVisual Stdioで作成する際に、SDKや言語の組み合わせが複数あって迷う。
.Net Framework Forms
少し前の主流、ググると色々情報もあるので便利だけどちょっと古臭い?特に画面解像度が混在した時の考慮がされていない。まぁ十分なんだけど今更なぁという感じ。WPF(Windows Presentation Frame work) + .NET 8.0
今風、BUGもまだ多いらしい。次も控えている。MAUI(Multi Application User Interface)
Mac やIphoneでも動く。クロスプラットフォームな環境。
SFP TOOLS Form + C++版 (2024/02/15)
CT341のドライバーがC言語であり、そのサンプルもC++だったのでまず。これから手をつけた。まぁ、動くようにはなったけど。WindowsのSDKが基本手的にC#用であることもありイマイチ。C#で書き直すならSDKも新しいのに切り替えた方が良いかと思った。
Windowsで使うC++はクラシックはものとは色々違うのも混乱する。全く別な言語の方が判りやすい。
SFP TOOLS WPF + C#(2024/02/19)
C言語用のCT341のライブラリをC#から外部DLL呼び出しにして、基本的にC#で記述。GUIもWPFに。全体的にすっきりした感じ。
SFP TOOLS MAUI(将来)
CT341を使用した、I2Cへの直接操作ができなくても。バイナリー形式で保存されたEEPROMデータのチェックにも使えるのでMac/iPadで使えるツールも開発したい。
他のUSB I2Cデバイスへの対応
USB ISS : 検討中
MCP211
fs.box : 対応したいんだけど仕様が不明なので難しい。情報を求む。
MacOS用のI2C操作のメモ
https://github.com/setarcos/ch341prog
https://qiita.com/infinite1oop/items/df0e90480a20e9c6ffd5
https://qiita.com/yamori813/items/e8fa21a6eddbf5595bfb
CH341
https://kig.re/2014/12/31/how-to-use-arduino-nano-mini-pro-with-CH340G-on-mac-osx-yosemite.html
https://github.com/WCHSoftGroup/ch34xser_macos
Serial用のドライバ
https://www.wch-ic.com/downloads/CH341SER_MAC_ZIP.html