private void insertPCBData(int headerID, type_PCB_DATA qData)
        {
            try
            {
                using (SqlConnection con = new SqlConnection(cnstr))
                {
                    String sql = "INSERT INTO plc_data (header_id, position, units, vardata, passed, failed, test_description, unit_measure) VALUES " +
                                 "(@header_id, @position, @units, @vardata, @passed, @failed, @test_description, @unit_measure)";

                    using (SqlCommand command = new SqlCommand(sql, con))
                    {
                        command.Parameters.Add("header_id", SqlDbType.Int).Value = headerID;
                        command.Parameters.Add("position", SqlDbType.Int).Value  = qData.ID;
                        command.Parameters.Add("units", SqlDbType.Bit).Value     = qData.Units;
                        command.Parameters.Add("vardata", SqlDbType.Real).Value  = qData.VarData;
                        command.Parameters.Add("passed", SqlDbType.Bit).Value    = qData.Passed;
                        command.Parameters.Add("failed", SqlDbType.Bit).Value    = qData.Failed;
                        command.Parameters.Add("test_description", SqlDbType.VarChar, 500).Value = qData.TestDescription;
                        command.Parameters.Add("unit_measure", SqlDbType.VarChar, 25).Value      = qData.UnitMeasure;
                        con.Open();
                        command.ExecuteNonQuery();
                        con.Close();
                    }
                }
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                // SEND EMAIL
                addToLog("PLC DB ERROR (insertPCBData): " + e.StackTrace, true);
            }
        }
        private type_PCB_DATA createDummyType_PCB_DATA(int id)
        {
            type_PCB_DATA qData = new type_PCB_DATA();

            qData.ID      = (short)id;
            qData.Units   = 2;
            qData.VarData = 0;
            qData.Failed  = false;
            qData.Passed  = true;
            return(qData);
        }
 private void printPCBDetail(type_PCB_DATA pcbQData)
 {
     if (showDebug)
     {
         addToLog("QID: " + pcbQData.ID, showDebug);
         addToLog("Units: " + pcbQData.Units, showDebug);
         addToLog("VarData: " + pcbQData.VarData, showDebug);
         addToLog("Passed: " + pcbQData.Passed, showDebug);
         addToLog("Failed: " + pcbQData.Failed, showDebug);
         addToLog("Test Description: " + pcbQData.TestDescription, showDebug);
         addToLog("Unit Measure: " + pcbQData.UnitMeasure, showDebug);
         addToLog("-----------------", showDebug);
     }
 }
        private void getDetailData(int pcbID, int headerID, String[] unitMeasure, String[] testDescription)
        {
            String lastPartID = "LastPart[" + pcbID + "]";

            for (int i = 1; i < QSIZE; i++)
            {
                /*
                 * type_PCB_DATA pcbQData = createDummyType_PCB_DATA(i);
                 * printPCBDetail(pcbQData);
                 * insertPCBData(headerID, pcbQData);
                 */
                Tag udfQTag = new Tag(lastPartID + ".Q[" + i + "]");

                if (ControlLogix.ReadTag(udfQTag) != Logix.ResultCode.E_SUCCESS)
                {
                    addToLog("ERROR: Unable to download PLC Detail Data: " + ControlLogix.ErrorString + "--" + udfQTag.ErrorCode, true);
                    return;
                }

                if (ResultCode.QUAL_GOOD == udfQTag.QualityCode)
                {
                    type_PCB_DATA pcbQData = (type_PCB_DATA)udtEnc.ToType(udfQTag, typeof(type_PCB_DATA));
                    bool          passed   = pcbQData.Passed;
                    bool          failed   = pcbQData.Failed;

                    if (passed || failed)
                    {
                        pcbQData.TestDescription = testDescription[i];
                        pcbQData.UnitMeasure     = unitMeasure[i];

                        printPCBDetail(pcbQData);
                        insertPCBData(headerID, pcbQData);
                    }
                }
            }
        }