
请教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
关于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< 如果是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; 可能是接触不良,拔下重新插一次。 或者是串口不匹配,试着换一根线来用一下。 实在不行可以打电话问问软件的客服 一、类型定义类型定义的语法格式: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开始 在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 测试,将会看到屏幕一闪之后光标在左上角不停闪动。 恭喜你,你马上可以开始在企业管理器或查询分析器连接了。关于delphi串口的枚举问题
旅馆业治安管理系统v6.8总是提示串口打开失败\\\/串口尚未打开\\\/串口号不合法 是什么原因
枚举值是什么意思
思迅商云8 sql server端口打开失败1433



