Charmed Quark Systems, Ltd. - Support Forums and Community

Full Version: How do I set a breakpoint?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I am really new to CQC and am troubleshooting a driver that does not appear to be giving correct values for status. I am trying to figure out how to set a breakpoint in the code so that I don't have to step through it to get to the suspect area.

I have been unable to find out how to do this via trial and error.....and searched the docs/website to no avail...

I am sure that i am missing something obvious....Can anyone offer ideas?

I am using CML & CQC v6.

Thanks,

Dave
(03-25-2021, 05:53 PM)Spot Wrote: [ -> ]I am really new to CQC and am troubleshooting a driver that does not appear to be giving correct values for status. I am trying to figure out how to set a breakpoint in the code so that I don't have to step through it to get to the suspect area.

I have been unable to find out how to do this via trial and error.....and searched the docs/website to no avail...

I am sure that i am missing something obvious....Can anyone offer ideas?

I am using CML & CQC v6.

Thanks,

Dave
Click on the left side of the window in the greyed area adjacent to the code, and it will put a ">>>" there.   You can set as many as you want to allow you to walk through the code.
Thank you.... I knew it had to be there.

Now, just wondering what the protocol is within the community if I found an "issue" with a packaged driver.  Do I reach out to the most recent Dev....direct post....or is there another mechanism?

Thanks,

Dave
You can just post about it here on the forum and we can figure out what to do. what driver is it?
(03-26-2021, 04:48 PM)Dean Roddey Wrote: [ -> ]You can just post about it here on the forum and we can figure out what to do. what driver is it?
It is the RCS RS-485 V2 Driver.  I was having difficulty (Only in CQC) with two thermostats connected to the RS485 bus.  It wasn't showing any data for the lowest thermostat address.  In my troubleshooting, I found that the field ids were always set to the field ids of the last thermostat in the array. The problem was that it set field defs just fine, but not all of the parameters were reset for the next loop to get ids (Specifically the value in ThermoPref).

Here is the culprit code (starting at line 664 in the driver file):
Index := 0;
            While( Index < m_StatCount)

                //
                //  Get the thermo address of this one, and use that to get the
                //  user provided (or defaulted) thermo name.
                //
                ThermoAddr := m_IndexToStatAddress[Index];
                ThermoPref := m_ThermoNames[ThermoAddr];
               

                // Do the non-V2 fields first. OutsideTempStat has to be the first one
                FldDef.Set(ThermoPref + "_OutsideTempStat", CQCFldTypes.Int, CQCFldAccess.ReadWrite);
                FieldList.AddObject(FldDef);

                FldDef.Set(ThermoPref + "_RunScheduleStat", CQCFldTypes.Boolean, CQCFldAccess.ReadWrite);
                FieldList.AddObject(FldDef);
                ...More field ids set....

                // These have to follow V2 standards, so we can use a helper
                V2Help.GetThermoFlds
                (
                    FieldList
                    , ThermoPref
                    , LimTemp
                    , LimHighSP
                    , LimLowSP
                    , "Enum: Auto, On"
                    , "Enum: Off, On"
                    , "Enum: Off, Cool, Heat, Auto"
                    , "Enum: Off, Cool, Heat, Auto, Unknown"
                );

                Index ++;
            EndWhile;

            SetFields(FieldList);

            Index := 0;
            While( Index < m_StatCount)

             *******I added this to get it to the correct value for ThermoPref vice using the last value********

                //
                //  Get the thermo address of this one, and use that to get the
                //  field id for the associated thermostat.
                //
                ThermoAddr := m_IndexToStatAddress[Index];
                ThermoPref := m_ThermoNames[ThermoAddr];

******************* End of my added Code**********************

                m_Field_OutsideTemp[Index]        := FldIdFromName(ThermoPref + "_OutsideTempStat");
...more of the same..

                // Set the mode and fan mode to reasonable defaults
                WriteStringFld(m_Field_Mode[Index], "Auto");
                WriteStringFld(m_Field_FanMode[Index], "Auto");

                Index ++;
            EndWhile;

            // poll for initial data...
I also use an RCS Driver, it is not a V2 driver, but written by toymaster/jscheller - V2.0.  At the time I installed it, the V2 driver was not available, and this driver had features for the ZCVx units, which are zone controlled.  I had problems with this driver working on the same RS485 bus as well, and ended up setting up two separate RS485 lines for each RCS unit.

https://www.charmedquark.com/vb_forums/s...534&page=6 (The driver I used is toward the bottom of the page)

I tried using the V2 driver, but always had some connection issues (connect, then drop) - I didn't pursue it too hard as my unit is 13 years old and is working fine with the this driver, and I figured it was probably because it was an older unit - possibly older firmware than needed.
I've updated the shipped driver for the next drop. Thanks.