[Ttssh2-commit] [3644] シリアルポートに関する説明を追加した。

svnno****@sourc***** svnno****@sourc*****
2009年 10月 14日 (水) 23:04:02 JST


Revision: 3644
          http://sourceforge.jp/projects/ttssh2/svn/view?view=rev&revision=3644
Author:   yutakapon
Date:     2009-10-14 23:04:02 +0900 (Wed, 14 Oct 2009)

Log Message:
-----------
シリアルポートに関する説明を追加した。

Modified Paths:
--------------
    trunk/doc/ja/html/reference/sourcecode.html


-------------- next part --------------
Modified: trunk/doc/ja/html/reference/sourcecode.html
===================================================================
--- trunk/doc/ja/html/reference/sourcecode.html	2009-10-13 10:42:01 UTC (rev 3643)
+++ trunk/doc/ja/html/reference/sourcecode.html	2009-10-14 14:04:02 UTC (rev 3644)
@@ -28,6 +28,7 @@
   <li><a href="#ttssh">TTSSH‚É‚æ‚éSSH‚̐݌v‚ÆŽÀ‘•</a></li>
   <li><a href="#macro">ƒ}ƒNƒŒ¾Œê‚̐݌v‚ÆŽÀ‘•</a></li>
   <li><a href="#caret">ƒLƒƒƒŒƒbƒg§Œä</a></li>
+  <li><a href="#serial">ƒVƒŠƒAƒ‹ƒ|[ƒg</a></li>
 </ol>
 
 <hr width=80% align=center>
@@ -1092,9 +1093,116 @@
 
 <br>
 
+
 <hr>
 
 
+<h2><a name="serial">ƒVƒŠƒAƒ‹ƒ|[ƒg</a></h2>
+  <h3>ŠT—v</h3>
+@Tera Term‚ÍUART(16550A)ŒÝŠ·‚̃VƒŠƒAƒ‹ƒ|[ƒg‚ɑΉž‚µ‚Ä‚¢‚邽‚߁AƒVƒŠƒAƒ‹ƒRƒ“ƒ\[ƒ‹‚ªŽg—p‚Å‚«‚Ü‚·BƒVƒŠƒAƒ‹ƒ|[ƒg‚Ì‚±‚Æ‚ðACOM(Communication Port)ƒ|[ƒg‚ƌĂԂ±‚Æ‚à‚ ‚è‚Ü‚·BOS‚ªŒŸo‚µ‚½COMƒ|[ƒg‚́A‡‚É"COM1"A"COM2"‚Æ‚¢‚Á‚½–¼‘O‚ª•t‚¯‚ç‚êAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚ç—˜—p‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·BMicrosoft Windows XP‚ł́AÅ‘å256ŒÂ‚ÌCOMƒ|[ƒgiCOM1`COM256j‚Ü‚Å‚ª—˜—p‰Â”\‚Å‚·B<br>
+@ƒpƒ\ƒRƒ“‚É“‹Ú‚³‚ê‚éCOMƒ|[ƒg‚́A‚¹‚¢‚º‚¢1‚A‘½‚­‚Ä‚à2‚‚ł ‚èAÅ‹ß‚Å‚Í‚Ü‚Á‚½‚­COMƒ|[ƒg‚ª‚È‚¢ƒpƒ\ƒRƒ“‚à‘¶Ý‚µ‚Ü‚·B‚»‚Ì‚½‚߁AUSBÚ‘±‚É‚æ‚éƒVƒŠƒAƒ‹ƒ|[ƒg‚ðŽÀŒ»‚·‚éuUSBƒVƒŠƒAƒ‹•ÏŠ·ƒP[ƒuƒ‹v‚ª”­”„‚³‚ê‚Ä‚¢‚Ü‚·B‚±‚¤‚¢‚Á‚½»•i‚Ì“Á’¥‚Æ‚µ‚āAOS‚É”FŽ¯‚³‚¹‚éCOMƒ|[ƒg‚̔ԍ†‚ðAƒ†[ƒU‚ªŽ©—R‚ɐݒè‚Å‚«‚é‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B‚·‚È‚í‚¿ATera TermŒ©‚¦‚ɂ́A2‚‚ÌCOMƒ|[ƒg‚ª‚ ‚Á‚½ê‡A‚»‚ꂼ‚ê"COM1"A"COM2"‚Æ‚µ‚Ä”FŽ¯‚Å‚«‚é‚Æ‚ÍŒÀ‚炸A"COM1"A"COM7"‚Æ‚¢‚Á‚½‚Ó‚¤‚É”FŽ¯‚Å‚«‚é‚悤‚É‚È‚é•K—v‚ª‚ ‚è‚Ü‚·B<br>
+@
+  <h3>COMƒ|[ƒg‚̃ŠƒXƒgƒAƒbƒv</h3>
+@‚©‚‚ĂÌTera Term‚ł́A"COM1"‚©‚ç"COM256"‚Ü‚Å‚Ì‚·‚ׂĂÌCOMƒ|[ƒg‚ðAÚ‘±ƒ_ƒCƒAƒƒO‚ɃŠƒXƒgƒAƒbƒv‚µ‚Ä‚¢‚Ü‚µ‚½‚ªAŽg‚¢ŸŽè‚ª‚æ‚­‚ ‚è‚Ü‚¹‚ñ‚Å‚µ‚½B‚»‚±‚ŁAÚ‘±ƒ_ƒCƒAƒƒO‚ðŒÄ‚яo‚µ‚½ƒ^ƒCƒ~ƒ“ƒO‚É‚¨‚¢‚āiTera Term‹N“®Žž‚Ì‚Ý‚Å‚Í•s\•ªjAOS‚ª”FŽ¯‚µ‚Ä‚¢‚éCOMƒ|[ƒg‚ðŒŸo‚·‚é‚悤‚É‚µ‚āA•K—v‚ÈCOMƒ|[ƒg‚Ì‚Ý‚ð•\Ž¦‚³‚¹‚é‚悤‚É‚µ‚Ü‚µ‚½B‚»‚ÌŒŸoƒƒWƒbƒN‚ªADetectComPorts()#ttcmn.c ‚Å‚·BQueryDosDevice() API‚ðŽg—p‚µAMS-DOSƒfƒoƒCƒX–¼‚©‚ç"COM"‚ð’T‚µ‚Ü‚·B<br>
 
+<pre class=code>
+	if (((h = GetModuleHandle("kernel32.dll")) != NULL) &&
+	    (GetProcAddress(h, "QueryDosDeviceA") != NULL) &&
+	    (QueryDosDevice(NULL, devicesBuff, 65535) != 0)) {
+		p = devicesBuff;
+		while (*p != '\0') {
+			if (strncmp(p, "COM", 3) == 0 && p[3] != '\0') {
+				ComPortTable[comports++] = atoi(p+3);
+				if (comports >= ComPortMax)
+					break;
+			}
+			p += (strlen(p)+1);
+		}
+</pre>
+
+  <h3>COMƒ|[ƒg‚̃tƒ‹ƒl[ƒ€Žæ“¾</h3>
+
+@ã‹L‚̏ˆ—‚¾‚¯‚Å‚àƒ†[ƒUƒrƒŠƒeƒB‚ÍŒüã‚·‚é‚Ì‚Å‚·‚ªA‚³‚ç‚È‚é—~‹‚Æ‚µ‚āAŠeCOMƒ|[ƒg‚É•t‚¯‚ç‚ê‚éuƒtƒ‹ƒl[ƒ€v‚𓯎ž‚É•\Ž¦‚µ‚½‚­‚È‚è‚Ü‚·BCOMƒ|[ƒg‚̔ԍ†‚Æ‚Æ‚à‚ɁAƒtƒ‹ƒl[ƒ€‚à•t‰Á•\Ž¦‚Å‚«‚é‚ƁA‚³‚ç‚ÉŽg‚¢ŸŽè‚ª‚æ‚­‚Ȃ邱‚Æ‚ªŠú‘Ò‚³‚ê‚Ü‚·B‚±‚̉ۑè‚ð‰ðŒˆ‚·‚é‚Ì‚ªAListupSerialPort()#ttcmn.c ‚Å‚·B<br>
+@
+<pre class=code>
+static void ListupSerialPort(LPWORD ComPortTable, int comports, char **ComPortDesc, int ComPortMax)
+{
+	GUID ClassGuid[1];
+	DWORD dwRequiredSize;
+	BOOL bRet;
+	HDEVINFO DeviceInfoSet = NULL;
+	SP_DEVINFO_DATA DeviceInfoData;
+	DWORD dwMemberIndex = 0;
+	int i;
+
+	DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
+
+	bRet =
+		SetupDiClassGuidsFromName(_T("PORTS"), (LPGUID) & ClassGuid, 1,
+		                          &dwRequiredSize);
+	if (!bRet) {
+		goto cleanup;
+	}
+
+	DeviceInfoSet =
+		SetupDiGetClassDevs(&ClassGuid[0], NULL, NULL, DIGCF_PRESENT | DIGCF_PROFILE);
+
+	if (DeviceInfoSet) {
+		dwMemberIndex = 0;
+		while (SetupDiEnumDeviceInfo
+		       (DeviceInfoSet, dwMemberIndex++, &DeviceInfoData)) {
+			TCHAR szFriendlyName[MAX_PATH];
+			TCHAR szPortName[MAX_PATH];
+			DWORD dwReqSize = 0;
+			DWORD dwPropType;
+			DWORD dwType = REG_SZ;
+			HKEY hKey = NULL;
+
+			bRet = SetupDiGetDeviceRegistryProperty(DeviceInfoSet,
+			                                        &DeviceInfoData,
+			                                        SPDRP_FRIENDLYNAME,
+			                                        &dwPropType,
+			                                        (LPBYTE)
+			                                        szFriendlyName,
+			                                        sizeof(szFriendlyName),
+			                                        &dwReqSize);
+
+			hKey = SetupDiOpenDevRegKey(DeviceInfoSet,
+			                            &DeviceInfoData,
+			                            DICS_FLAG_GLOBAL,
+			                            0, DIREG_DEV, KEY_READ);
+			if (hKey) {
+				long lRet;
+				dwReqSize = sizeof(szPortName);
+				lRet = RegQueryValueEx(hKey,
+				                       _T("PortName"),
+				                       0,
+				                       &dwType,
+				                       (LPBYTE) & szPortName,
+				                       &dwReqSize);
+				RegCloseKey(hKey);
+			}
+
+			if (_strnicmp(szPortName, "COM", 3) == 0) {  // COMƒ|[ƒgƒhƒ‰ƒCƒo‚ð”­Œ©
+				int port = atoi(&szPortName[3]);
+				int i;
+
+				for (i = 0 ; i < comports ; i++) {
+					if (ComPortTable[i] == port) {  // Ú‘±‚ðŠm”F
+						ComPortDesc[i] = _strdup(szFriendlyName);
+						break;
+					}
+				}
+			}
+		}
+	}
+
+cleanup:
+	SetupDiDestroyDeviceInfoList(DeviceInfoSet);
+}
+</pre>
+
+
+
 </BODY>
 </HTML>



Ttssh2-commit メーリングリストの案内