出力用のアプリがかなり残念な出来なので、
これを0からというか1から開発してみます。
まぁもちろん、前情報としてかなり問題があること自体はわかっていて
手持ちのイラレで作ったSVGがかなりの確率で読み込めませんし、
閉領域もNGだし、画像もかなりアバウトです。
※Pythonコードに手を入れるというメンドイことはやりません。^^;
最初の段階でやってみるのは、解析とテストです。
幸い、現状のアプリにはGコード出力機能があるので、それを多少の手がかりにして進めます。
今回は、SmartlaserCo2(mini)は、USB接続によるCOMポート出力なので、
COMポート一覧を取得してSmartLaserが接続されているCOMポートかどうかを判断する部分から始めます。
ということで、C++(Windows)で書くと、こんな感じ。
JSONを扱うクラスが数か所でてきますが、これは値を保存する構造体代わりに使っています。
取得したサンプルはこんな感じ。
- /*
- COMポートリスト取得
- ↓結果サンプル
- {
- "comlist":[
- {
- "friendlyname":"通信ポート (COM1)"
- ,"name":"COM1"
- }
- ]
- }
- */
- int aCom::getComList(aDom8* pZ){
- aDom8& Z = *pZ; // JSON-Object
- char buffer[256];
- memset(buffer,0,sizeof(buffer));
- DWORD Length = 0;
- HDEVINFO hDevInfo = ::SetupDiGetClassDevs( &GUID_DEVINTERFACE_COMPORT, NULL, 0/*hwnd*/, ( DIGCF_PRESENT | DIGCF_DEVICEINTERFACE ) );
- DWORD w=0;
- SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};
- for(w=0; ::SetupDiEnumDeviceInfo( hDevInfo, w, &DeviceInfoData ); w++){
- ::SetupDiGetDeviceRegistryPropertyA( hDevInfo, &DeviceInfoData, SPDRP_FRIENDLYNAME, 0, (unsigned char*)buffer,sizeof(buffer),&Length );
- Z[w]["friendlyname"] = (const char*)buffer; // JSON-Object
- HKEY key = ::SetupDiOpenDevRegKey( hDevInfo, &DeviceInfoData, DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_QUERY_VALUE );
- if(key){
- DWORD type = 0;
- DWORD size = sizeof( buffer );
- ::RegQueryValueExA(key, "PortName", 0, &type, (unsigned char*)buffer, &size);
- Z[w]["name"] = (const char*)buffer; // JSON-Object
- }
- }
- return w;
- }
きっと、【Arduino Mega 2560(COM3)】みたいな感じで、friendlynameが取れると思ってたのです。
しかし、、、残念ながらこのやりかたでは、仮想COMが取れませんでした。
んーーー。
仕方ない。。。WDKいれて、やるか。。。(>_<)
つづく。
0 件のコメント:
コメントを投稿