• R/O
  • SSH
  • HTTPS

qrobosdk: コミット


コミットメタ情報

リビジョン1981 (tree)
日時2012-04-06 02:22:40
作者satofumi

ログメッセージ

change line feed

変更サマリ

差分

--- trunk/libs/connection/isUsingComDriver.h (revision 1980)
+++ trunk/libs/connection/isUsingComDriver.h (revision 1981)
@@ -1,30 +1,30 @@
1-#ifndef QRK_IS_USING_COM_DRIVER_H
2-#define QRK_IS_USING_COM_DRIVER_H
3-
4-/*!
5- \file
6- \brief 指定ドライバが利用中かを判断する
7-
8- \author Satofumi KAMIMURA
9-
10- $Id$
11-*/
12-
13-namespace qrk
14-{
15- /*!
16- \brief 指定ドライバを利用している COM ポートが存在するかを返す
17-
18- \param[in] com_port 判定を行う COM ポート
19- \param[in] driver_name 判定を行うドライバ名
20-
21- \retval true 指定ドライバの COM ポートが存在する
22- \retval false 存在しない
23-
24- \attention Windows 環境でなければ常に false を返す
25- \attention 動作確認は、Windows XP のみ。他では未検証
26- */
27- bool isUsingComDriver(const char* com_port, const char* driver_name);
28-}
29-
30-#endif /* !QRK_IS_USING_COM_DRIVER_H */
1+#ifndef QRK_IS_USING_COM_DRIVER_H
2+#define QRK_IS_USING_COM_DRIVER_H
3+
4+/*!
5+ \file
6+ \brief 指定ドライバが利用中かを判断する
7+
8+ \author Satofumi KAMIMURA
9+
10+ $Id$
11+*/
12+
13+namespace qrk
14+{
15+ /*!
16+ \brief 指定ドライバを利用している COM ポートが存在するかを返す
17+
18+ \param[in] com_port 判定を行う COM ポート
19+ \param[in] driver_name 判定を行うドライバ名
20+
21+ \retval true 指定ドライバの COM ポートが存在する
22+ \retval false 存在しない
23+
24+ \attention Windows 環境でなければ常に false を返す
25+ \attention 動作確認は、Windows XP のみ。他では未検証
26+ */
27+ bool isUsingComDriver(const char* com_port, const char* driver_name);
28+}
29+
30+#endif /* !QRK_IS_USING_COM_DRIVER_H */
--- trunk/libs/connection/isUsingComDriver.cpp (revision 1980)
+++ trunk/libs/connection/isUsingComDriver.cpp (revision 1981)
@@ -1,102 +1,102 @@
1-/*!
2- \file
3- \brief 指定ドライバが利用中かを判断する
4-
5- \author Satofumi KAMIMURA
6-
7- $Id$
8-*/
9-
10-#include "isUsingComDriver.h"
11-#include "DetectOS.h"
12-#ifdef WINDOWS_OS
13-#include <windows.h>
14-#include <string>
15-#endif
16-
17-using namespace std;
18-
19-
20-#ifdef WINDOWS_OS
21-namespace
22-{
23- bool existRegValue(HKEY hkey, LPCSTR subkey, const char* find_value)
24- {
25- HKEY next_hkey;
26- if (RegOpenKeyExA(hkey, subkey,
27- 0, KEY_READ, &next_hkey) != ERROR_SUCCESS) {
28- return false;
29- }
30- enum { MaxLength = 1024 };
31-
32- // find_value が存在するかを探索
33- CHAR device[MaxLength + 1];
34- char name[MaxLength + 1];
35-
36- DWORD ret = ERROR_SUCCESS;
37- for (int i = 0; ret == ERROR_SUCCESS; ++i) {
38- DWORD dl = MaxLength;
39- DWORD nl = MaxLength;
40- ret = RegEnumValueA(hkey, i, device, &dl,
41- NULL, NULL, (BYTE*)name, &nl);
42- if (ret != ERROR_SUCCESS) {
43- break;
44- }
45- if (! strncmp(name, find_value, nl)) {
46- RegCloseKey(next_hkey);
47- return true;
48- }
49- }
50-
51- // find_value が存在しなければ、再帰探索を行う
52- char next_subkey[MaxLength];
53- FILETIME filetime;
54-
55- ret = ERROR_SUCCESS;
56- for (int i = 0; ret == ERROR_SUCCESS; ++i) {
57- DWORD dl = MaxLength, nl = MaxLength;
58- ret = RegEnumKeyExA(next_hkey, i, next_subkey,
59- &dl, NULL, NULL, &nl, &filetime);
60- if (ret != ERROR_SUCCESS) {
61- break;
62- }
63-
64- bool value_exist =
65- existRegValue(next_hkey, next_subkey, find_value);
66- if (value_exist) {
67- RegCloseKey(next_hkey);
68- return true;
69- }
70- }
71-
72- RegCloseKey(next_hkey);
73- return false;
74- }
75-}
76-
77-
78-bool qrk::isUsingComDriver(const char* com_port, const char* driver_name)
79-{
80- // 指定した名前と一致するかを確認する
81- // !!!
82-
83- // 指定ドライバ名が が Value に含まれているか検索
84- string value_pattern = string(driver_name) + " (" + com_port + ")";
85- if (existRegValue(HKEY_LOCAL_MACHINE,
86- "SYSTEM\\CurrentControlSet\\Enum\\USB",
87- value_pattern.c_str())) {
88- return true;
89- }
90- return false;
91-}
92-#else
93-
94-
95-bool qrk::isUsingComDriver(const char* com_port, const char* driver_name)
96-{
97- static_cast<void>(com_port);
98- static_cast<void>(driver_name);
99-
100- return false;
101-}
102-#endif
1+/*!
2+ \file
3+ \brief 指定ドライバが利用中かを判断する
4+
5+ \author Satofumi KAMIMURA
6+
7+ $Id$
8+*/
9+
10+#include "isUsingComDriver.h"
11+#include "DetectOS.h"
12+#ifdef WINDOWS_OS
13+#include <windows.h>
14+#include <string>
15+#endif
16+
17+using namespace std;
18+
19+
20+#ifdef WINDOWS_OS
21+namespace
22+{
23+ bool existRegValue(HKEY hkey, LPCSTR subkey, const char* find_value)
24+ {
25+ HKEY next_hkey;
26+ if (RegOpenKeyExA(hkey, subkey,
27+ 0, KEY_READ, &next_hkey) != ERROR_SUCCESS) {
28+ return false;
29+ }
30+ enum { MaxLength = 1024 };
31+
32+ // find_value が存在するかを探索
33+ CHAR device[MaxLength + 1];
34+ char name[MaxLength + 1];
35+
36+ DWORD ret = ERROR_SUCCESS;
37+ for (int i = 0; ret == ERROR_SUCCESS; ++i) {
38+ DWORD dl = MaxLength;
39+ DWORD nl = MaxLength;
40+ ret = RegEnumValueA(hkey, i, device, &dl,
41+ NULL, NULL, (BYTE*)name, &nl);
42+ if (ret != ERROR_SUCCESS) {
43+ break;
44+ }
45+ if (! strncmp(name, find_value, nl)) {
46+ RegCloseKey(next_hkey);
47+ return true;
48+ }
49+ }
50+
51+ // find_value が存在しなければ、再帰探索を行う
52+ char next_subkey[MaxLength];
53+ FILETIME filetime;
54+
55+ ret = ERROR_SUCCESS;
56+ for (int i = 0; ret == ERROR_SUCCESS; ++i) {
57+ DWORD dl = MaxLength, nl = MaxLength;
58+ ret = RegEnumKeyExA(next_hkey, i, next_subkey,
59+ &dl, NULL, NULL, &nl, &filetime);
60+ if (ret != ERROR_SUCCESS) {
61+ break;
62+ }
63+
64+ bool value_exist =
65+ existRegValue(next_hkey, next_subkey, find_value);
66+ if (value_exist) {
67+ RegCloseKey(next_hkey);
68+ return true;
69+ }
70+ }
71+
72+ RegCloseKey(next_hkey);
73+ return false;
74+ }
75+}
76+
77+
78+bool qrk::isUsingComDriver(const char* com_port, const char* driver_name)
79+{
80+ // 指定した名前と一致するかを確認する
81+ // !!!
82+
83+ // 指定ドライバ名が が Value に含まれているか検索
84+ string value_pattern = string(driver_name) + " (" + com_port + ")";
85+ if (existRegValue(HKEY_LOCAL_MACHINE,
86+ "SYSTEM\\CurrentControlSet\\Enum\\USB",
87+ value_pattern.c_str())) {
88+ return true;
89+ }
90+ return false;
91+}
92+#else
93+
94+
95+bool qrk::isUsingComDriver(const char* com_port, const char* driver_name)
96+{
97+ static_cast<void>(com_port);
98+ static_cast<void>(driver_name);
99+
100+ return false;
101+}
102+#endif
--- trunk/programs/UrgRecorder/main.cpp (revision 1980)
+++ trunk/programs/UrgRecorder/main.cpp (revision 1981)
@@ -1,38 +1,38 @@
1-/*!
2- \file
3- \breif URG のデータを記録するツール
4-
5- \author Satofumi KAMIMURA
6-
7- $Id$
8-*/
9-
10-#include "UrgRecorderWidget.h"
11-#include <QApplication>
12-#include <QTranslator>
13-
14-
15-int main(int argc, char *argv[])
16-{
17- QApplication app(argc, argv);
18- bool record_intensity_ = false;
19- for (int i = 1; i < argc; ++i) {
20- if (! strcmp(argv[i], "-i")) {
21- record_intensity_ = true;
22- }
23- }
24-
25- // ロケールの適用
26- QString locale = QLocale::system().name();
27- QTranslator translator;
28- translator.load("UrgRecorder_" + locale);
29- app.installTranslator(&translator);
30-
31- // アプリケーションの起動
32- UrgRecorderWidget widget;
33- if (record_intensity_) {
34- widget.setIntensityMode();
35- }
36- widget.show();
37- return app.exec();
38-}
1+/*!
2+ \file
3+ \breif URG のデータを記録するツール
4+
5+ \author Satofumi KAMIMURA
6+
7+ $Id$
8+*/
9+
10+#include "UrgRecorderWidget.h"
11+#include <QApplication>
12+#include <QTranslator>
13+
14+
15+int main(int argc, char *argv[])
16+{
17+ QApplication app(argc, argv);
18+ bool record_intensity_ = false;
19+ for (int i = 1; i < argc; ++i) {
20+ if (! strcmp(argv[i], "-i")) {
21+ record_intensity_ = true;
22+ }
23+ }
24+
25+ // ロケールの適用
26+ QString locale = QLocale::system().name();
27+ QTranslator translator;
28+ translator.load("UrgRecorder_" + locale);
29+ app.installTranslator(&translator);
30+
31+ // アプリケーションの起動
32+ UrgRecorderWidget widget;
33+ if (record_intensity_) {
34+ widget.setIntensityMode();
35+ }
36+ widget.show();
37+ return app.exec();
38+}
--- trunk/programs/UrgRecorder/UrgRecorderWidget.h (revision 1980)
+++ trunk/programs/UrgRecorder/UrgRecorderWidget.h (revision 1981)
@@ -1,45 +1,45 @@
1-#ifndef URG_RECORDER_WIDGET_H
2-#define URG_RECORDER_WIDGET_H
3-
4-/*!
5- \file
6- \brief URG データの記録ウィジット
7-
8- \author Satofumi KAMIMURA
9-
10- $Id$
11-*/
12-
13-#include "ui_UrgRecorderWidgetForm.h"
14-#include <memory>
15-
16-
17-class UrgRecorderWidget : public QWidget, private Ui::UrgRecorderWidgetForm
18-{
19- Q_OBJECT;
20-
21-public:
22- UrgRecorderWidget(QWidget* parent = 0);
23- ~UrgRecorderWidget(void);
24-
25- void setIntensityMode(void);
26-
27-private slots:
28- void closeEvent(QCloseEvent* event);
29- void rescanPressed(void);
30- void connectPressed(bool connection, const std::string& device);
31- void recordPressed(void);
32- void cancelPressed(void);
33- void timesChanged(int times);
34- void recordData(void);
35- void rawButtonChanged(bool checked);
36-
37-private:
38- UrgRecorderWidget(const UrgRecorderWidget& rhs);
39- UrgRecorderWidget& operator = (const UrgRecorderWidget& rhs);
40-
41- struct pImpl;
42- std::auto_ptr<pImpl> pimpl;
43-};
44-
45-#endif /* !URG_RECORDER_WIDGET_H */
1+#ifndef URG_RECORDER_WIDGET_H
2+#define URG_RECORDER_WIDGET_H
3+
4+/*!
5+ \file
6+ \brief URG データの記録ウィジット
7+
8+ \author Satofumi KAMIMURA
9+
10+ $Id$
11+*/
12+
13+#include "ui_UrgRecorderWidgetForm.h"
14+#include <memory>
15+
16+
17+class UrgRecorderWidget : public QWidget, private Ui::UrgRecorderWidgetForm
18+{
19+ Q_OBJECT;
20+
21+public:
22+ UrgRecorderWidget(QWidget* parent = 0);
23+ ~UrgRecorderWidget(void);
24+
25+ void setIntensityMode(void);
26+
27+private slots:
28+ void closeEvent(QCloseEvent* event);
29+ void rescanPressed(void);
30+ void connectPressed(bool connection, const std::string& device);
31+ void recordPressed(void);
32+ void cancelPressed(void);
33+ void timesChanged(int times);
34+ void recordData(void);
35+ void rawButtonChanged(bool checked);
36+
37+private:
38+ UrgRecorderWidget(const UrgRecorderWidget& rhs);
39+ UrgRecorderWidget& operator = (const UrgRecorderWidget& rhs);
40+
41+ struct pImpl;
42+ std::auto_ptr<pImpl> pimpl;
43+};
44+
45+#endif /* !URG_RECORDER_WIDGET_H */
旧リポジトリブラウザで表示