LeoSchoonbroodt Posted April 29, 2023 Report Posted April 29, 2023 Hi John, I have a dormant lua script which communicates with 3 arduinos over 3 comports. It listens to incoming data from these Comports via an event.com. Lately sometimes one of these comports do not open, probably a problem with the arduino. Whats iritating is the fact that the event.com for the not opened Comport generates an error and causes the lua to terminate. I can test if the Comport is open before sending data but cannot conditionally load the event.com, so if that Comport is not opened, lua exits and i would like to just keep running as its perfectly usable with those 2 comports that still work, in fact the failing Comport is hardly used. I realise that my main problem is the faulty arduino, but it would be nice if i had a possibility to only load the event.com if the port opens correct. I tried the if statement to only load the event.com if the com.open returned a value > 0 but that doesn´t seem to work. It happens very intermittantly and i see the problem only after loading the flight. Is there a way to conditionally load the event.com which i don´t know of, or do you have other suggestions I attached a logfile in which i repeatedly loaded the lua file again just to see it exit on this error. Thank you. FSUIPC7_prev.log
John Dowson Posted April 29, 2023 Report Posted April 29, 2023 I am not sure I fully understand your issue - it would help if you could attach the lua file that is causing this problem, as that would be where the solution. if any, would need to be applied....
LeoSchoonbroodt Posted April 29, 2023 Author Report Posted April 29, 2023 Hi John, In the attached lua file you can see that i open MainComport at line 184 and it indeed logs an error when the return is 0 (line 186). on line 4245 to 4247 are event.com events that listen to incoming data from the comports. If opening MainComPort returns 0, the event.com generates an error and lua terminates. Yesterday i tried to conditional load the event with: if MainComPort ~= 0 then event.com(MainComPort, 25, -1, 10, "GetMainData") end but that didn't change anything, if MainComPort isn't opened the event.com is still loaded and generates an error. I was wondering if there is a method to conditionally load that event only if the returned handle is valid. Don't look at all the commented code because i am building a Helicopter-cyclic based on a arduino but that isn't ready yet so i commented that code out for now. the lua script performs fine as long as it can open all the Comports. thanks for taking the time and making such a fine product, as i enjoyed it for years now. Any sugestions to cope with this intermittend error would be highly appreciated. Leo JS145.lua
LeoSchoonbroodt Posted April 30, 2023 Author Report Posted April 30, 2023 Hi John, Don't bother for this problem, it is solved. Just saw that it isn't the Comport that failed to open for which the event.com generates an error and cause lua to terminate but one of the other Comports. In debugging this i found that i made a THINKING error: if the open of the first Comport fails i also don't open the others, so the conditional load of the event.com did probably work but the others were also not opened and generated the error. I moved the event-handlingprocedures in front of the opening of the comports and then load the event only on succesfull opening of the comport. Now the only error that is logged is the fact that the Comport didn't open but the lua script keeps running albeit with one comport less. So this indicates that the conditional load of the event.com is possible. Sorry to bother you with this, which is in fact a programming error. Have a nice evening. Leo
John Dowson Posted May 1, 2023 Report Posted May 1, 2023 Ok, thanks for the update Leo. I was going to look into this today and that has saved me some time! Cheers, John
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now