gpt4 book ai didi

c++ - 串口写c++

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:38 28 4
gpt4 key购买 nike

我在 C++ 编程方面还很陌生我需要你的帮助。

我想做一个简单的GUI它将通过 serial port 与外部设备通信并将 char type 打磨到设备上。接下来是我的问题

  1. 我不明白mySirialPort->Write(array<Char>^, Int32, Int32) --- array<Char>^什么样的类型variable我需要写进去。

因为我得到下一个错误。

1>Return_NAN.cpp(19): error C2440: 'initializing' : cannot convert from 'const char [2]' to 'char'
1> There is no context in which this conversion is possible
1>Return_NAN.cpp(30): error C2664: 'void System::IO::Ports::SerialPort::Write(cli::array<Type,dimension> ^,int,int)' : cannot convert parameter 1 from 'char' to 'cli::array<Type,dimension> ^'
1> with
1> [
1> Type=wchar_t,
1> dimension=1
1> ]

我的代码:

char a = "A";        
SerialPort^ mySerialPort = gcnew SerialPort(a);
//mySerialPort->PortName = a;
mySerialPort->BaudRate = 1200;
mySerialPort->Parity = Parity::None;
mySerialPort->StopBits = StopBits::One;
mySerialPort->DataBits = 8;
mySerialPort->Handshake = Handshake::None;
mySerialPort->Open();
mySerialPort->Write(t,0,1); // problem
mySerialPort->Close();

如果我直接写“A”来编写函数,那么我在编译时就不会出错。

感谢您的帮助,知识库

最佳答案

System::IO::Ports::SerialPort 是一个 .NET 类。请记住,您正在使用称为 C++/CLI 的语言扩展,阅读基本教程将为您节省大量时间。它与 C++ 有很大的不同,有一个学习曲线,一周将对学习基本类型和知道何时使用 ^ 帽子有很大帮助。

您已经发现写入字符串很容易,SerialPort::Write() 有一个接受字符串的重载。它会将字符串转换为 ASCII,因此您只能写入 0 到 127 之间的字符值:

String^ example1 = "ABC";
mySerialPort->Write(example1);

写入单个字节最简单的方法是写入 BaseStream,不进行任何转换:

Byte example2 = 'A';   // or 0x41
mySerialPort->BaseStream->WriteByte(example2);

如果你想写一个字节数组,就像错误消息说的那样,那么你必须创建一个数组对象:

array<Byte>^ example3 = gcnew array<Byte> { 0x01, 0x02, 0x42 };
mySerialPort->Write(example3, 0, example3->Length);

没有根本的理由支持写入一个字节数组而不是一次写入一个字节,反正串行端口非常慢。

关于c++ - 串口写c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32770503/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com