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">Lbg§ä</a></li> + <li><a href="#serial">VA|[g</a></li> </ol> <hr width=80% align=center> @@ -1092,9 +1093,116 @@ <br> + <hr> +<h2><a name="serial">VA|[g</a></h2> + <h3>Tv</h3> +@Tera TermÍUART(16550A)Ý·ÌVA|[gÉεĢé½ßAVAR\[ªgpÅ«Ü·BVA|[g̱ÆðACOM(Communication Port)|[gÆÄÔ±Æà èÜ·BOSªoµ½COM|[gÍAÉ"COM1"A"COM2"Æ¢Á½¼Oªt¯çêAAvP[V©çp·é±ÆªÅ«Ü·BMicrosoft Windows XPÅÍAÅå256ÂÌCOM|[giCOM1`COM256jÜŪpÂ\Å·B<br> +@p\RÉÚ³êéCOM|[gÍA¹¢º¢1ÂA½Äà2ÂÅ èAÅßÅÍÜÁ½COM|[gªÈ¢p\Rà¶ÝµÜ·B»Ì½ßAUSBÚ±ÉæéVA|[gðÀ»·éuUSBVAÏ·P[uvª³êĢܷ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¯Å«éæ¤ÉÈéKvª èÜ·B<br> +@ + <h3>COM|[gÌXgAbv</h3> +@©ÂÄÌTera TermÅÍA"COM1"©ç"COM256"ÜÅÌ·×ÄÌCOM|[gðAÚ±_CAOÉXgAbvµÄ¢Üµ½ªAg¢èªæ èܹñŵ½B»±ÅAÚ±_CAOðÄÑoµ½^C~Oɨ¢ÄiTera TermN®ÌÝÅÍs\ªjAOSªF¯µÄ¢éCOM|[gðo·éæ¤ÉµÄAKvÈCOM|[gÌÝð\¦³¹éæ¤ÉµÜµ½B»ÌoWbNªADetectComPorts()#ttcmn.c Å·BQueryDosDevice() APIðgpµAMS-DOSfoCX¼©ç"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Ìtl[æ¾</h3> + +@ãL̾¯Åà[UreBÍüã·éÌÅ·ªA³çÈé~ƵÄAeCOM|[gÉt¯çêéutl[vð¯É\¦µ½ÈèÜ·BCOM|[gÌÔÆÆàÉAtl[à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|[ghCoð© + int port = atoi(&szPortName[3]); + int i; + + for (i = 0 ; i < comports ; i++) { + if (ComPortTable[i] == port) { // Ú±ðmF + ComPortDesc[i] = _strdup(szFriendlyName); + break; + } + } + } + } + } + +cleanup: + SetupDiDestroyDeviceInfoList(DeviceInfoSet); +} +</pre> + + + </BODY> </HTML>