只是想知道是否有人可以对这里出了什么问题有所了解......
我有一个python脚本连接到USB到CAN收发器/加密狗(由PEAK系统制造)来进行一些CAN通信。该脚本非常完美。该脚本接受命令行参数,并且在从Windows命令行调用时工作正常。
我正在尝试将此脚本集成到C#Forms项目中。我已成功地从C#应用程序调用Python脚本,但当它达到Python脚本尝试使用CAN收发器时,事情就会崩溃。
感觉C#app前端不允许Python脚本访问串行端口。
这是我得到的错误(Python脚本在Visual Studio输出上写入StandardOut):
line 86, in canSendRec
self.bus.send(canMessage, timeout=0.1)
AttributeError: 'Node' object has no attribute 'bus'
Unable to Connect to USB-CAN Device
这是来自canSendRec的行 - 异常处理程序来自(我们写的):
try:
self.bus = can.interface.Bus('PCAN_USBBUS1',bitrate=1000000)
self.bus.flush_tx_buffer()
except:
print("Unable to Connect to USB-CAN Device")
以下是调用Python脚本的C#代码:
public string pythonMakeCall(string script, string arg1){
ProcessStartInfo pyProcessStartInfo = new ProcessStartInfo(py_path);
pyProcessStartInfo.FileName = py_path;
pyProcessStartInfo.Arguments = string.Format("{0} {1}", script, arg1);
pyProcessStartInfo.CreateNoWindow = true;
pyProcessStartInfo.UseShellExecute = false;
pyProcessStartInfo.RedirectStandardOutput = true;
pyProcessStartInfo.RedirectStandardError = true;
Process pyProcess = new Process();
pyProcess.StartInfo = pyProcessStartInfo;
pyProcess.Start();
retString = pyProcess.StandardOutput.ReadToEnd();
pyProcess.WaitForExit();
return retString;}
就像我说的那样,感觉C#应用程序有些东西不允许Python访问USB端口,但我不知道从哪里开始调试预感,因为,免责声明:< / strong>这是我第一次涉足C#/ Visual Studio,我也不是Python专家。