Creative Lau

Results 8 comments of Creative Lau

> Does this work with STC8H3K64S4? I'm not sure.

单片机的ADC输入阻抗比较低,如果外部的分压输入阻抗太高的话会影响ADC的采样结果。你的这个电路,加上DSO后,R8和R9+R10等于是并联到一起,并联后的值是6K,6K和R7串在一起分压刚好是1/3。输入阻抗低的问题可以通过增加运放解决,但一般的运放在转换高频信号时速度跟不上。

我也有同样的问题,不是32位64位dll的事,mt4就必须用32位,mt5才是64位,有的时候无论重复多少次,只要一运行python端就会强退,有的时候又可以打开运行很久,不过也有强退的现象。

经过查找发现是mt4端的发送代码造成的,ZmqMsg不能作为返回值再进行发送,这就是导致mt4闪退的原因,为什么有时候行有时候又不行暂时不知道原因,这可能要debug libzmq.dll才能发现原因,因为从libzmq.dll项目的介绍看,libzmq.dll是不支持win10的。 目前解决方法是把MessageHandler返回类型改成string,在OnTimer事件里用返回值构造ZmqMsg进行发送,或者直接发送返回的string。

> 嗯嗯,感谢您分享解决方案。我再测试测试。 查看libzmq的文档后,终于知道是怎么回事了,文档中写着Never access zmq_msg_t members directly, instead always use the zmq_msg family of functions. 所以不能直接去访问zmq_msg,必须用zmq_msg_copy方法去传递zmq_msg。 所以EA代码的137行reply=ret是不对的,应改成reply.copy(ret),但仍不能解决闪退,看来把zmq_msg作为返回值也是不行的,所以还得先返回string再做处理。 我在Pull request里上传代码了,你可以试试update那一版。 https://github.com/ns2250225/py-mt4/pull/6

Definitely, it should be modified as your recommendation. I have changed the pull request.

Yes, the /MP will be appended only if the compiler is MSVC.