Jetson-Windows通信框架代码
功能
光机
- 装载投影条纹
- 格雷码条纹
- 相移条纹
- 读取led电流值
- 设置led电流值
- 读取投影仪分辨率
- 开始投影
- 单次投影
- 连续投影
相机
- 读取曝光时间
- 读取相机分辨率
- 读取相机帧率
- 设置曝光时间
- 设置相机帧率
- 设置触发方式
- 预览模式(如何预览从而用于调整曝光)
其他
- 图像转存
- 点云转存
- 点云平滑程度选择(强,中,弱,无)
- Z轴区间选择
- 点云的伪彩色可视化
- 不同画幅的选择
- 预置不同画幅的标定文件,根据不同画幅选择对应的标定文件
Jetson端
- 处理客户端发送来控制码
- strtok()函数分割字符串
- strcmp()函数比较字符串
Windows端
- 发送控制码
- getline()函数获取输入的控制码
框架代码
Jestson服务器
1 |
|
Windows客户端
1 |
|
函数用法
字符串比较
使用 std::vector<char*>
和 strtok
处理字符串时,可能遇到两个常见问题:
- 字符串比较问题:
parts[i]
是一个char*
,不能直接使用==
进行比较。这将比较指针的地址,而不是内容。需要使用strcmp
来比较C风格字符串。 - 访问越界问题:在访问
parts[2]
时(如std::stoi(parts[2])
),需要确保parts
的大小足够,否则会导致访问越界。
strtok()
头文件:string.h
函数功能:根据指定的分割符来分割一个字符串,并在连续的调用中返回分割后的每一个字串(会破坏原始字符串)。
1 |
|
参数:
- str:指向要分割的字符串的指针
- delim:分割符
返回值:
- strtok()在第一次调用时,返回第一次找到的不包含分割符的子串的指针。在后续调用中,返回后续的子串。当没有子串可以返回时,返回NULL。
示例用法:
1 |
|
注意事项:
strtok()
是非线程安全的,因为它使用了静态缓冲区来保存数据。如果需要线程安全,可以使用strtok_r()
。strtok()
会修改原始字符串,通过在每个分隔符的位置插入空字符('\0'
)来终止当前返回的子串。- 在C++中也可以使用
std::istringstream
和std::getline
来分割字符串。
getline()
头文件:string
函数功能:用于从输入流读取一行文本。可以读取包含空格在内的整行内容,直到遇到换行符为止。
1 |
|
参数:
- is:输入流的引用,可以是std::cin
- str:用于存储读取的行
getline()和 >>
的区别:
>>
是输入流的提取运算符,用于从输入流中提取数据并将其存储在变量中。>>
与std::cin一起使用时,会在遇到空白(空格,制表符,换行符)时停止读取。>>
不包含空白字符在内,因此不适合读取包含空格的整行文本。当只需要读取单个单词或者值的时候使用>>
。
Jetson-Windows通信框架代码
http://example.com/2025/02/22/StructLight/通信框架/