Ejemplo n.º 1
0
        public bool GetReceiverModlInfo(byte byRowAddr /*0~15*/, byte byColAddr /*0~13*/, ref tagRecvModlInfo rReceiverModlInfo)
        {
            bool bResult = false;

            if (NRealModuleAmount > MaxReceiverHubPortAmnt * MaxRecvHubPortModlAmnt)
            {
                NRealModuleAmount = MaxReceiverHubPortAmnt * MaxRecvHubPortModlAmnt;
            }
            for (int i = 0; i < NRealModuleAmount; i++)
            {
                if ((StReceiverModlInfo[i].ByModuleAddr >> 4) == byRowAddr && (StReceiverModlInfo[i].ByModuleAddr & 0xF) == byColAddr)
                {
                    rReceiverModlInfo = StReceiverModlInfo[i];

                    bResult = true;
                    break;
                }
            }
            return(bResult);
        }
Ejemplo n.º 2
0
        public async void GetModuleData(CancellationToken ct)
        {
            while (!ct.IsCancellationRequested)
            {
                tagRecvModlInfo[] tmod = new tagRecvModlInfo[18];
                moduleStatus_v1   ms1  = new moduleStatus_v1();
                if (signs.PollingState)
                {
                    int j = 0;
                    int k = 0;

                    Logger.Instance.Log("SenderID: {0}", signs.SenderId);


                    for (int i = 0; i < 2; i++)
                    {
                        Logger.Instance.Log("{0} - Polling Modules...", signs.SenderId.ToString());

                        LEDLane.GetModuleData(signs.SenderId, (byte)j, 0, out ms1);

                        if (j == 0)
                        {
                            j++;
                        }
                        else
                        {
                            j--;
                            k++;
                        }


                        k = 0;
                        int x = 0;
                        int y = 0;

                        Logger.Instance.Log("SenderID: {0} Receiver Card: {1}", signs.SenderId, i);
                        for (int z = 0; z < 18; z++)
                        {
                            ms1.GetReceiverModlInfo((byte)x, (byte)y, ref tmod[z]);
                            signs.recCard[i].Mod[z].ColAddr     = tmod[z].GetModlAddrCol();
                            signs.recCard[i].Mod[z].RowAddr     = tmod[z].GetModlAddrRow();
                            signs.recCard[i].Mod[z].ModVolt     = tmod[z].GetModlVoltAsFloat();
                            signs.recCard[i].Mod[z].ModTemp     = tmod[z].GetModlTemperature();
                            signs.recCard[i].Mod[z].CableStatus = tmod[z].IsCableOk();

                            if (y == 5)
                            {
                                y = 0;
                                x++;
                            }
                            else
                            {
                                y++;
                            }

                            Logger.Instance.Log(string.Format("{0} - {1} {2} {3} {4}", signs.SenderId.ToString(), signs.recCard[i].Mod[z].ColAddr, signs.recCard[i].Mod[z].RowAddr,
                                                              signs.recCard[i].Mod[z].ModVolt, signs.recCard[i].Mod[z].ModTemp, signs.recCard[i].Mod[z].CableStatus));



                            string sql        = ConfigurationManager.AppSettings["InsertModuleData"].ToString();
                            string connString = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;

                            using (SqlConnection conn = new SqlConnection(connString))
                            {
                                try
                                {
                                    using (SqlCommand cmd = new SqlCommand(sql))
                                    {
                                        cmd.Connection  = conn;
                                        cmd.CommandType = CommandType.StoredProcedure;
                                        cmd.Parameters.Add("@SignID", SqlDbType.Int).Value          = signs.SignID;
                                        cmd.Parameters.Add("@SenderID", SqlDbType.Int).Value        = signs.SenderId;
                                        cmd.Parameters.Add("@ReceiverIndexid", SqlDbType.Int).Value = signs.recCard[i].RecCardIndex;
                                        cmd.Parameters.Add("@ModTemp", SqlDbType.Decimal).Value     = signs.recCard[i].Mod[z].ModTemp;
                                        cmd.Parameters.Add("@ModVoltage", SqlDbType.Decimal).Value  = signs.recCard[i].Mod[z].ModVolt;
                                        cmd.Parameters.Add("@CableStatus", SqlDbType.Bit).Value     = signs.recCard[i].Mod[z].CableStatus;
                                        cmd.Parameters.Add("@ModAddress", SqlDbType.VarChar).Value  =
                                            signs.recCard[i].Mod[z].ColAddr.ToString() + "," + signs.recCard[i].Mod[z].RowAddr.ToString();
                                        cmd.Connection.Open();

                                        cmd.ExecuteNonQuery();
                                    }
                                }
                                catch (SqlException ex)
                                {
                                    Logger.Instance.Log("SQL Error: " + ex.Message);
                                }
                                catch (Exception e)
                                {
                                    Logger.Instance.Log("Error: " + e.Message);
                                }
                            }
                        }
                    }
                }
                await Task.Delay(10000);
            }
        }