private void PayoutBtn_Click(object sender, EventArgs e) { bool payoutRequired = false; byte[] data = new byte[9 * Hopper.NumberOfChannels]; // create to size of maximum possible byte length = 0; int dataIndex = 0; byte denomsToPayout = 0; // For each denomination for (int i = 0; i < Hopper.NumberOfChannels; i++) { try { // Check if there is input in the box if (AmountToPayout[i].Text != "" && AmountToPayout[i].Text != "0") { // If textbox isn't blank then this denom is being paid out denomsToPayout++; length += 9; // 9 bytes per denom to payout (2 amount, 4 value, 3 currency) payoutRequired = true; // need to do a payout as there is now > 0 denoms // Number of this denomination to payout UInt16 numToPayout = UInt16.Parse(AmountToPayout[i].Text); byte[] b = CHelpers.ConvertInt16ToBytes((short)numToPayout); data[dataIndex++] = b[0]; data[dataIndex++] = b[1]; // Value of this denomination ChannelData d = Hopper.UnitDataList[i]; b = CHelpers.ConvertInt32ToBytes(d.Value); data[dataIndex++] = b[0]; data[dataIndex++] = b[1]; data[dataIndex++] = b[2]; data[dataIndex++] = b[3]; // Currency of this denomination data[dataIndex++] = (Byte)d.Currency[0]; data[dataIndex++] = (Byte)d.Currency[1]; data[dataIndex++] = (Byte)d.Currency[2]; } } catch (Exception ex) { MessageBox.Show(ex.ToString()); payoutRequired = false; // don't payout on exception } } if (payoutRequired) { // Send payout command and shut this form Hopper.PayoutByDenomination(denomsToPayout, data, length, Output); base.Dispose(); } }
// This uses the SET COIN AMOUNT command to increase a channel level by passing over the channel and the amount to increment by public void SetCoinLevelsByChannel(int channel, short amount, TextBox log = null) { m_cmd.CommandData[0] = CCommands.Hopper.SSP_CMD_SET_COIN_AMOUNT; // Level to set byte[] b = CHelpers.ConvertInt16ToBytes(amount); m_cmd.CommandData[1] = b[0]; m_cmd.CommandData[2] = b[1]; // Coin(channel) to set b = CHelpers.ConvertInt32ToBytes(GetChannelValue(channel)); m_cmd.CommandData[3] = b[0]; m_cmd.CommandData[4] = b[1]; m_cmd.CommandData[5] = b[2]; m_cmd.CommandData[6] = b[3]; // Add country code, locate from dataset foreach (ChannelData d in m_UnitDataList) { if (d.Channel == channel) { m_cmd.CommandData[7] = (byte)d.Currency[0]; m_cmd.CommandData[8] = (byte)d.Currency[1]; m_cmd.CommandData[9] = (byte)d.Currency[2]; break; } } m_cmd.CommandDataLength = 10; if (!SendCommand(log)) { return; } if (CheckGenericResponses(log)) { // Update the level foreach (ChannelData d in m_UnitDataList) { if (d.Channel == channel) { d.Level += amount; break; } } if (log != null) { log.AppendText("Changed coin value " + CHelpers.FormatToCurrency(GetChannelValue(channel)).ToString() + "'s level to " + amount.ToString() + "\r\n"); } } }
// This function uses the FLOAT AMOUNT command to set the float amount. The Hopper will empty // coins into the cashbox leaving the requested floating amount in the payout. The minimum payout // is also setup so the validator will leave itself the ability to payout the minimum value requested. public bool SetFloat(short minPayout, int floatAmount, char[] currency, TextBox log = null) { m_cmd.CommandData[0] = CCommands.Hopper.SSP_CMD_FLOAT_AMOUNT; // Min payout byte[] b = CHelpers.ConvertInt16ToBytes(minPayout); m_cmd.CommandData[1] = b[0]; m_cmd.CommandData[2] = b[1]; // Amount to payout b = CHelpers.ConvertInt32ToBytes(floatAmount); m_cmd.CommandData[3] = b[0]; m_cmd.CommandData[4] = b[1]; m_cmd.CommandData[5] = b[2]; m_cmd.CommandData[6] = b[3]; // Country code m_cmd.CommandData[7] = (byte)currency[0]; m_cmd.CommandData[8] = (byte)currency[1]; m_cmd.CommandData[9] = (byte)currency[2]; m_cmd.CommandData[10] = 0x58; // real float m_cmd.CommandDataLength = 11; if (!SendCommand(log)) { return(false); } if (CheckGenericResponses(log)) { if (log != null) { log.AppendText("Set float successfully\r\n"); } return(true); } return(false); }
// This uses the SET COIN AMOUNT command to increase a channel level by passing over the coin value and the amount to increment by public void SetCoinLevelsByCoin(int coin, char[] currency, short amount, TextBox log = null) { m_cmd.CommandData[0] = CCommands.Hopper.SSP_CMD_SET_COIN_AMOUNT; byte[] b = CHelpers.ConvertInt16ToBytes(amount); m_cmd.CommandData[1] = b[0]; m_cmd.CommandData[2] = b[1]; b = CHelpers.ConvertInt32ToBytes(coin); m_cmd.CommandData[3] = b[0]; m_cmd.CommandData[4] = b[1]; m_cmd.CommandData[5] = b[2]; m_cmd.CommandData[6] = b[3]; m_cmd.CommandData[7] = (byte)currency[0]; m_cmd.CommandData[8] = (byte)currency[1]; m_cmd.CommandData[9] = (byte)currency[2]; m_cmd.CommandDataLength = 10; if (!SendCommand(log)) { return; } if (CheckGenericResponses(log)) { // Update the level foreach (ChannelData d in m_UnitDataList) { if (d.Value == coin) { d.Level += amount; break; } } if (log != null) { log.AppendText("Increased coin value " + CHelpers.FormatToCurrency(coin).ToString() + "'s level by " + amount.ToString() + "\r\n"); } } }