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