我必须通过 FTDI RS485 连接器(具有常用的通讯软件接口)以 1000000 波特率在 Mono 中与设备进行通信。操作系统 - Linux(Ubuntu...特别是 Mint13),mono 2.10.2。
首先我在 Linux 上运行简单的 python 测试程序:
>> import serial
>> ser = serial.Serial("/dev/ttyUSB0",1000000, timeout=0.5)
>> ser.write(":DCS3FF8;") # Some message to the device with crc
>> ser.readall()
':CDS P0 M0 E0 L1 S07B3B;' #This is the correct response from the device
>> print ser
Serial<id=0x2ce71d0, open=True>(port='/dev/ttyUSB0', baudrate=1000000, bytesize=8, parity='N', stopbits=1, timeout=0.5, xonxoff=False, rtscts=False, dsrdtr=False)
Run Code Online (Sandbox Code Playgroud)
设备响应正确。一切正常。这表明Linux上一切运行良好。
然后我退出 python 并尝试将 Mono 与代码一起使用:
var serialPort = new SerialPort();
serialPort.PortName = "/dev/ttyUSB0";
serialPort.BaudRate = …Run Code Online (Sandbox Code Playgroud) 使用fish shell,我正在编写一个非常简单的脚本来检查命令执行
#!/usr/bin/fish
command
if $status
echo "Oops error"
else
echo "Worked OK"
#...
end
Run Code Online (Sandbox Code Playgroud)
并收到错误消息:
fish:变量不能用作命令.相反,定义一个像"功能状态; 0 $ argv; 结束".通过键入"help function",可以参阅功能命令的帮助部分.
该消息看起来非常简单但没有"定义函数如..."和"帮助功能"有助于解决问题.
还有一个'测试'命令,听起来很有希望.但是文档说这是用来检查文件......
如何用鱼壳做这么简单的事情?
嘿......为什么所有文件都有误导性?
PS请不要写'和'命令.
#if !defined(__cplusplus)
#error C++ compiler required.
#endif
Run Code Online (Sandbox Code Playgroud)
但它一般是跨平台和交叉编译器吗?它可能是某些标准的一部分吗?
PS.因为即使查看GCC和MSVC手册中给出的示例,也会看到差异.虽然它既可以使用引号也可以使用引号,但它会产生一种悲伤的感觉,它可能以某种方式依赖于编译器.
GCC的例子
#error "Won't work on ..." // quotes here
Run Code Online (Sandbox Code Playgroud)
MSVC的例子
#error C++ compiler required. // no qutes
Run Code Online (Sandbox Code Playgroud) UDK使用.NET.那么也许有可能以某种方式使用UnrealScript中的.NET?
使用C#和UnrealScript非常棒.
当然可以构建C++层来在.NET和UnrealScript之间进行交互,这将使用dllimport,但它不是这个问题的主题.