feat(ch934x): 添加GPIO方向控制和串口参数配置功能

- 添加Ch934xMode和GpioDirection枚举类定义
- 实现GPIO方向控制相关方法(setGpioDir/queryGpioDirFromCache)
- 添加GPIO使能控制(enableGpio)和数量/组数查询(getGpiocount/getGpiogroup)
- 实现串口参数配置(setSerialParameter)包括波特率/数据位/停止位/校验位/流控
- 添加Break信号控制(setBreak)功能
- 实现当前串口模式查询(getCurrentMode)
- 添加设备连接状态查询(isConnected)和已打开设备列表获取(getConnectedDevices)
- 更新文档说明GPIO方向控制和串口参数配置用法
- 在示例应用中添加相关功能按钮和操作逻辑
This commit is contained in:
Developer
2026-07-07 16:15:11 +08:00
parent 4813e79c80
commit 020904bd2a
8 changed files with 765 additions and 9 deletions
+111
View File
@@ -215,6 +215,117 @@ class MethodChannelCh934xSerial extends Ch934xSerialPlatform {
);
}
@override
Future<bool> setBreak(bool valid) {
return methodChannel.invokeMethod<bool>(
'setBreak',
<String, Object>{'valid': valid},
).then((v) => v ?? false);
}
@override
Future<int> getCurrentMode() {
return methodChannel.invokeMethod<int>('getCurrentMode')
.then((v) => v ?? -1);
}
@override
Future<int> getGpiocount(int deviceId) {
return methodChannel.invokeMethod<int>(
'getGPIOCount',
<String, Object>{'deviceId': deviceId},
).then((v) => v ?? -1);
}
@override
Future<int> getGpiogroup(int deviceId) {
return methodChannel.invokeMethod<int>(
'getGPIOGroup',
<String, Object>{'deviceId': deviceId},
).then((v) => v ?? -1);
}
@override
Future<bool> enableGpio({
required int chipType,
required int gpioGroup,
required int enable,
}) {
return methodChannel.invokeMethod<bool>(
'enableGPIO',
<String, Object>{
'chipType': chipType,
'gpioGroup': gpioGroup,
'enable': enable,
},
).then((v) => v ?? false);
}
@override
Future<bool> setGpioDir({
required int gpioGroup,
required int gpioNumber,
required int dir,
}) {
return methodChannel.invokeMethod<bool>(
'setGPIODir',
<String, Object>{
'gpioGroup': gpioGroup,
'gpioNumber': gpioNumber,
'dir': dir,
},
).then((v) => v ?? false);
}
@override
Future<int> queryGpioDirFromCache({
required int gpioGroup,
required int gpioNumber,
}) {
return methodChannel.invokeMethod<int>(
'queryGPIODirFromCache',
<String, Object>{
'gpioGroup': gpioGroup,
'gpioNumber': gpioNumber,
},
).then((v) => v ?? -1);
}
@override
Future<bool> isConnected(int deviceId) {
return methodChannel.invokeMethod<bool>(
'isConnected',
<String, Object>{'deviceId': deviceId},
).then((v) => v ?? false);
}
@override
Future<List<int>> getConnectedDevices() async {
final raw = await methodChannel.invokeMethod<List<dynamic>>('getConnectedDevices');
if (raw == null) return const <int>[];
return raw.whereType<int>().toList(growable: false);
}
@override
Future<bool> setSerialParameter({
required int baud,
int dataBit = 8,
int stopBit = 1,
int parityBit = 0,
bool flow = false,
}) {
return methodChannel.invokeMethod<bool>(
'setSerialParameter',
<String, Object>{
'baud': baud,
'dataBit': dataBit,
'stopBit': stopBit,
'parityBit': parityBit,
'flow': flow,
},
).then((v) => v ?? false);
}
/// 释放内部资源,通常仅在测试或热重载场景下使用。
@visibleForTesting
void dispose() {