C#app调用使用USB转CAN收发器的Python脚本

时间:2018-02-18 04:31:04

标签: c# python can-bus

只是想知道是否有人可以对这里出了什么问题有所了解......

我有一个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专家。

0 个答案:

没有答案