欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 口号 > 枚举可用串口号pb

枚举可用串口号pb

时间:2018-12-25 10:39

请教Delphi下如何枚举系统当前可用的串口

class function TSysMethod.GetSysComList: TStringListvarKeyHandle: HKEYErrCode, Index: IntegerValueName, Data: stringValueLen, DataLen, ValueType: DWORDTmpPorts: TStringListegiErrCode := RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'HARDWARE\\\\DEVICEMAP\\\\SERIALCOMM', 0,KEY_READ, KeyHandle)if ErrCode <> ERROR_SUCCESS theShowMessage('打开串口列表的注册表项出错')TmpPorts := TStringList.CreatetryIndex := 0repeatValueLen := 256DataLen := 256SetLength(ValueName, ValueLen)SetLength(Data, DataLen)ErrCode := RegEnumValue(KeyHandle, Index, PChar(ValueName),Cardinal(ValueLen), nil, @ValueType, PByte(PChar(Data)), @DataLen)if ErrCode = ERROR_SUCCESS theegiSetLength(Data, DataLen)TmpPorts.Add(Data)Inc(Index)endelse if ErrCode <> ERROR_NO_MORE_ITEMS theShowMessage('打开串口列表的注册表项出错')until (ErrCode <> ERROR_SUCCESS)TmpPorts.SortResult := TmpPortfinallyRegCloseKey(KeyHandle)endend

用MFC做上位机串口通信 如何让电脑自己枚举串口

BOOL CToolUser::GetSystemSerialComport() \\\/\\\/获取计算机中的所有串口{ HKEY hKey=NULL; CArray comarray;comarray.RemoveAll(); if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT(HARDWARE\\\\\\\\DEVICEMAP\\\\\\\\SERIALCOMM),0,KEY_READ,&hKey)!=ERROR_SUCCESS) { return FALSE; } CString valuename=_T();CString databuffer=_T(); DWORD valuenamebufferlength=200;DWORD valuetype=0;DWORD databuddersize=200; int i=0; while(RegEnumValue(hKey,i++,valuename.GetBuffer(200),&valuenamebufferlength,NULL,&valuetype,(BYTE*)databuffer.GetBuffer(200),&databuddersize)!= ERROR_NO_MORE_ITEMS) { comarray.Add(CString(databuffer)); databuddersize=200; valuenamebufferlength=200; } if(comarray.GetSize()==0){MessageBox(_T(本计算机中没有可用的串口),_T(提示));return FALSE;}for(int i=0;iInsertString(i,comarray[i]);}((CComboBox *)GetDlgItem(IDC_COMLIST))->SetCurSel(0);\\\/\\\/默认选择第一个串口RegCloseKey(hKey); return TRUE; }

关于C语言中枚举类型 枚举变量可以赋值为不在范围内的值吗

如下边的程序:

color_type类型是对一个变量取值范围的限定,而花括号内是它的取值范围,即color_type 类型的变量color 只能取值为花括号内的任何一个值,如果赋给该类型变量的值不在列表中,则会报错。

我看了一下你提供的教学视频,他是在ubuntu系统下编译的,linux的编译器肯定有所不同。

据我所知,变量值超出范围在microsoft的编译器这边都会报错。

上面所说的强制转换:一个原本不是color_type类型的变量被你硬生生转换成该类型,没有实际意义。

字符a被你转换成color_type类型,当然可以赋值啦。

如何枚举系统COM串口

int nCount = 0; \\\/\\\/系统COM端口的注册表信息就在该目录下。

if(RegKey.Open(HKEY_LOCAL_MACHINE, Hardware\\\\\\\\DeviceMap\\\\\\\\SerialComm) == ERROR_SUCCESS) { while(true) { TCHAR ValueName[_MAX_PATH]; \\\/\\\/记录键名 BYTE ValueData[_MAX_PATH]; \\\/\\\/记录键值 DWORD nValueSize = _MAX_PATH; DWORD nDataSize = _MAX_PATH; DWORD nType; \\\/\\\/逐个枚举出注册表目录下的键名和键值。

if(::RegEnumValue(HKEY(RegKey), nCount, ValueName, &nValueSize, NULL, &nType, ValueData, &nDataSize) == ERROR_NO_MORE_ITEMS) { break; } cout<

if(RegKey.Open(HKEY_LOCAL_MACHINE, Hardware\\\\\\\\DeviceMap\\\\\\\\SerialComm) == ERROR_SUCCESS) { while(true) { TCHAR ValueName[_MAX_PATH]; \\\/\\\/记录键名 BYTE ValueData[_MAX_PATH]; \\\/\\\/记录键值 DWORD nValueSize = _MAX_PATH; DWORD nDataSize = _MAX_PATH; DWORD nType; \\\/\\\/逐个枚举出注册表目录下的键名和键值。

if(::RegEnumValue(HKEY(RegKey), nCount, ValueName, &nValueSize, NULL, &nType, ValueData, &nDataSize) == ERROR_NO_MORE_ITEMS) { break; } cout<

关于delphi串口的枚举问题

如果是XP 会在注册表中保留的,可以在注册表中查找,然后读取出来.如果打开失败就是被占用了var rCom : TRegistry; lCom : TStrings;rCom := TRegistry.Create; lCom := TStringList.Create; cbCom.Clear; try rCom.RootKey := HKEY_LOCAL_MACHINE; if rCom.OpenKey('HARDWARE\\\\DEVICEMAP\\\\SERIALCOMM', false) then begin \\\/\\\/rCom.GetKeyNames(lCom); rCom.GetValueNames(lCom); for I := 0 to lCom.Count - 1 do begin sComName := rCom.ReadString(lCom.Strings[I]); if (sComName[1] = 'C') and (sComName[2] = 'O') and (sComName[3] = 'M') then cbCom.Items.Add(sComName); \\\/\\\/要找的COM口名字,其他信息你自己分析吧. end; finally lCom.Free; rCom.Free; end;

旅馆业治安管理系统v6.8总是提示串口打开失败\\\/串口尚未打开\\\/串口号不合法 是什么原因

可能是接触不良,拔下重新插一次。

或者是串口不匹配,试着换一根线来用一下。

实在不行可以打电话问问软件的客服

枚举值是什么意思

一、类型定义类型定义的语法格式:type<标识符1>=<类型1>;<标识符2>=<类型2>;……<标识符n>=<类型n>;二、枚举类型通过预定义列出所有值的标识符来定义一个有序集合,这些值的次序和枚举类型说明中的标识符的次序是一致的。

枚举类型的形式:(标识符1,……,标识符n)例如: type daystype=(sunday,monday,tuesday,wednesday,thursday,friday,saturday)枚举元素只能是标识符,而不能是数值常量或字符常量。

例如以下的定义是错误的:type daystype=('sun','mon','tue','wed','thu','fri','sat')枚举元素是标识符,不要把作为枚举元素的标识符视作变量名,它不能被赋值。

同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。

例如以下的定义是错误的:type daytype1=(monday,tuesday);daytype2=(monday,wednesday);可以将枚举类型的定义和变量的定义结合在一起。

例如:var a:(monday,tuesday,sunday)枚举类型属于顺序类型。

根据定义类型时各枚举元素的排列顺序确定它们的序列,序列号从0开始

思迅商云8 sql server端口打开失败1433

在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。

  如telnet 202.114.100.100 1433  通常端口值是1433,因为1433是sql server 2000的对于Tcp\\\/IP的默认侦听端口。

如果有问题,通常这一步会出问题。

通常的提示是“……无法打开连接,连接失败。

  如果这一步有问题,应该检查以下选项。

  1 检查远程服务器是否启动了sql server 2000服务。

如果没有,则启动。

  2 检查服务器端有没启用Tcp\\\/IP协议,因为远程连接(通过因特网)需要靠这个协议。

检查方法是,在服务器上打开 开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp\\\/ip协议,如果没有,则启用它。

  3 检查服务器的tcp\\\/ip端口是否配置为1433端口。

仍然在服务器网络实用工具里查看启用协议里面的tcp\\\/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。

  事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。

如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp\\\/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变。

  4 如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。

  5 检查服务器是否在1433端口侦听。

如果服务器没有在tcp连接的1433端口侦听,则是连接不上的。

检查方法是在服务器的dos或命令行下面输入  netstat -a -n 或者是netstat -an,在结果列表里看是否有类似 tcp 127.0.0.1 1433 listening 的项。

如果没有,则通常需要给sql server 2000打上至少sp3的补丁。

其实在服务器端启动查询分析器,输入 select @@version 执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁。

  如果以上都没问题,这时你再做telnet 服务器ip 1433 测试,将会看到屏幕一闪之后光标在左上角不停闪动。

恭喜你,你马上可以开始在企业管理器或查询分析器连接了。

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片