#include "SCFWrapper.h" #include // 数据包解析回调函数 PACKET_RET PacketParserCallback(const char* pRecData, uint32_t nLength, uint32_t& PacketLength) { // 实现你的数据包解析逻辑 // 这里简单示例:查找换行符作为包结束标记 for (uint32_t i = 0; i < nLength; i++) { if (pRecData[i] == '\n') { PacketLength = i + 1; return PACKET_ISPACKET; } } return PACKET_NOPACKET; } int main() { // 创建SCF包装器实例 SCFWrapper scfWrapper; // 从配置文件获取连接参数 ResDataObject connectionParams ; connectionParams["type"] = "COM"; connectionParams["port"] = "/dev/ttyVS10"; // 替换为实际串口设备 connectionParams["baudrate"] = "115200"; connectionParams["bytesize"] = "8"; connectionParams["parity"] = "0"; // 0=None, 1=Odd, 2=Even connectionParams["stopbits"] = "1"; // 初始化SCF库 std::string dllName = "libSerialSCF.so"; // 或 "libSerialSCF.so" if (!scfWrapper.Initialize(dllName)) { std::cerr << "Failed to initialize SCF: " << scfWrapper.GetLastError() << std::endl; return -1; } // 连接设备 int result = scfWrapper.Connect(connectionParams, PacketParserCallback, SCF_NORMAL_TRANSFER, 3000); if (result != SCF_SUCCEED) { std::cerr << "Failed to connect: " << result << std::endl; return -1; } std::cout << "Connected successfully" << std::endl; // 发送数据 std::string sendData = "Hello, device!\n"; unsigned int bytesSent = 0; // 锁定资源 if (!scfWrapper.Lock(1000)) { // 发送数据 result = scfWrapper.SendPacket(sendData.c_str(), sendData.length(), 5000, bytesSent); // 解锁资源 scfWrapper.Unlock(); if (result != SCF_SUCCEED) { std::cerr << "Failed to send data: " << result << std::endl; } else { std::cout << "Sent " << bytesSent << " bytes" << std::endl; } } else { std::cerr << "Failed to lock SCF resource" << std::endl; } // 接收数据 char buffer[1024]; unsigned int bytesReceived = 0; while(1) { result = scfWrapper.ReceivePacket(buffer, sizeof(buffer), 5000, bytesReceived); if (result == SCF_SUCCEED&& result!=0) { std::cout << "Received " << bytesReceived << " bytes: " << std::string(buffer, bytesReceived) << std::endl; } else if (result == SCF_TIMEOUT) { std::cout << "Receive timeout" << std::endl; } else { std::cerr << "Failed to receive data: " << result << std::endl; } } // 断开连接 scfWrapper.Disconnect(); return 0; }