public void gridStations_CellClick(System.Object sender, System.Windows.Forms.DataGridViewCellEventArgs e) { if (e.RowIndex < 0) { return; } long stationID = System.Convert.ToInt64(System.Convert.ToUInt32(gridStations.Rows[e.RowIndex].Cells[tCol_ID].Value)); if (gridStations.Columns[e.ColumnIndex].Name != tCol_But_All && gridStations.Columns[e.ColumnIndex].Name != tCol_But_Partial) { return; } CStation_SOLD instanceStn = jbc.Station(stationID); switch (gridStations.Columns[e.ColumnIndex].Name) { case tCol_But_All: if (instanceStn.CommandProtocol != CStationBase.Protocol.Protocol_01 | cbProtocol01.Checked) { if (Interaction.MsgBox(Localization.getResStr("tConfirmAction"), MsgBoxStyle.YesNo, Localization.getResStr("tResetAllCounters")) == MsgBoxResult.Yes) { uiTransact = resetCounters(stationID, true, true); iStationIDTransact = (int)stationID; // la actualización del grid de los contadores se hace con un timer // porque la API no está grabando en memoria y las tramas de lectura posteriores // a la escritura tardan en ejecutarse. Se usa una transacción. Cursor = Cursors.WaitCursor; timerUpdateCounters.Start(); } } break; case tCol_But_Partial: if (instanceStn.GetStationFeatures().PartialCounters) { if (Interaction.MsgBox(Localization.getResStr("tConfirmAction"), MsgBoxStyle.YesNo, Localization.getResStr("tResetPartialCounters")) == MsgBoxResult.Yes) { uiTransact = resetCounters(stationID, true, false); iStationIDTransact = (int)stationID; // la actualización del grid de los contadores se hace con un timer // porque la API no está grabando en memoria y las tramas de lectura posteriores // a la escritura tardan en ejecutarse. Se usa una transacción. Cursor = Cursors.WaitCursor; timerUpdateCounters.Start(); } } break; default: return; } }
private uint resetCounters(long stationID, bool bPartial, bool bGlobal) { // devuelve el ID de transacción para saber cuando ha finalizado CStation_SOLD instanceStn = jbc.Station(stationID); uint transact = (uint)0; instanceStn.SetControlMode(ControlModeConnection.CONTROL); if (bPartial && instanceStn.GetStationFeatures().PartialCounters) { for (var i = 0; i <= instanceStn.NumPorts - 1; i++) { instanceStn.ResetPortToolMinutesPartial((Port)i); } } if (bGlobal) { instanceStn.ResetPortToolMinutesGlobalPorts(); } transact = instanceStn.SetTransaction(); instanceStn.SetControlMode(ControlModeConnection.MONITOR); instanceStn = null; return(transact); }