出力用のアプリがかなり残念な出来なので、
これを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 件のコメント:
コメントを投稿