├── FUTABA_SBUS ├── FUTABA_SBUS.cpp ├── FUTABA_SBUS.h └── examples │ └── sbus_example │ └── sbus_example.ino ├── README.md ├── SBUS ├── SBUS.ino ├── config.h ├── config.ino └── servo.ino ├── SBUSDecoderCFG.exe ├── SBUSDecoderCFG ├── SBUSDecoderCFG.sln ├── SBUSDecoderCFG.suo └── SBUSDecoderCFG │ ├── Program.cs │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── SBUSDecoderCFG.csproj │ ├── frmMain.Designer.cs │ ├── frmMain.cs │ └── frmMain.resx ├── test.jpg └── test_cfg.jpg /FUTABA_SBUS/FUTABA_SBUS.cpp: -------------------------------------------------------------------------------- 1 | #include "FUTABA_SBUS.h" 2 | 3 | void FUTABA_SBUS::begin(){ 4 | uint8_t loc_sbusData[25] = { 5 | 0x0f,0x01,0x04,0x20,0x00,0xff,0x07,0x40,0x00,0x02,0x10,0x80,0x2c,0x64,0x21,0x0b,0x59,0x08,0x40,0x00,0x02,0x10,0x80,0x00,0x00}; 6 | int16_t loc_channels[18] = { 7 | 1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,0,0}; 8 | int16_t loc_servos[18] = { 9 | 1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,0,0}; 10 | port.begin(BAUDRATE); 11 | 12 | memcpy(sbusData,loc_sbusData,25); 13 | memcpy(channels,loc_channels,18); 14 | memcpy(servos,loc_servos,18); 15 | failsafe_status = SBUS_SIGNAL_OK; 16 | sbus_passthrough = 1; 17 | toChannels = 0; 18 | bufferIndex=0; 19 | feedState = 0; 20 | } 21 | 22 | int16_t FUTABA_SBUS::Channel(uint8_t ch) { 23 | // Read channel data 24 | if ((ch>0)&&(ch<=16)){ 25 | return channels[ch-1]; 26 | } 27 | else{ 28 | return 1023; 29 | } 30 | } 31 | uint8_t FUTABA_SBUS::DigiChannel(uint8_t ch) { 32 | // Read digital channel data 33 | if ((ch>0) && (ch<=2)) { 34 | return channels[15+ch]; 35 | } 36 | else{ 37 | return 0; 38 | } 39 | } 40 | void FUTABA_SBUS::Servo(uint8_t ch, int16_t position) { 41 | // Set servo position 42 | if ((ch>0)&&(ch<=16)) { 43 | if (position>2048) { 44 | position=2048; 45 | } 46 | servos[ch-1] = position; 47 | } 48 | } 49 | void FUTABA_SBUS::DigiServo(uint8_t ch, uint8_t position) { 50 | // Set digital servo position 51 | if ((ch>0) && (ch<=2)) { 52 | if (position>1) { 53 | position=1; 54 | } 55 | servos[15+ch] = position; 56 | } 57 | } 58 | uint8_t FUTABA_SBUS::Failsafe(void) { 59 | return failsafe_status; 60 | } 61 | 62 | void FUTABA_SBUS::PassthroughSet(int mode) { 63 | // Set passtrough mode, if true, received channel data is send to servos 64 | sbus_passthrough = mode; 65 | } 66 | 67 | int FUTABA_SBUS::PassthroughRet(void) { 68 | // Return current passthrough mode 69 | return sbus_passthrough; 70 | } 71 | void FUTABA_SBUS::UpdateServos(void) { 72 | // Send data to servos 73 | // Passtrough mode = false >> send own servo data 74 | // Passtrough mode = true >> send received channel data 75 | uint8_t i; 76 | if (sbus_passthrough==0) { 77 | // clear received channel data 78 | for (i=1; i<24; i++) { 79 | sbusData[i] = 0; 80 | } 81 | 82 | // reset counters 83 | ch = 0; 84 | bit_in_servo = 0; 85 | byte_in_sbus = 1; 86 | bit_in_sbus = 0; 87 | 88 | // store servo data 89 | for (i=0; i<176; i++) { 90 | if (servos[ch] & (1<>3|sbusData[3]<<5) & 0x07FF); 165 | channels[2] = ((sbusData[3]>>6|sbusData[4]<<2|sbusData[5]<<10) & 0x07FF); 166 | channels[3] = ((sbusData[5]>>1|sbusData[6]<<7) & 0x07FF); 167 | channels[4] = ((sbusData[6]>>4|sbusData[7]<<4) & 0x07FF); 168 | channels[5] = ((sbusData[7]>>7|sbusData[8]<<1|sbusData[9]<<9) & 0x07FF); 169 | channels[6] = ((sbusData[9]>>2|sbusData[10]<<6) & 0x07FF); 170 | channels[7] = ((sbusData[10]>>5|sbusData[11]<<3) & 0x07FF); // & the other 8 + 2 channels if you need them 171 | #ifdef ALL_CHANNELS 172 | channels[8] = ((sbusData[12]|sbusData[13]<< 8) & 0x07FF); 173 | channels[9] = ((sbusData[13]>>3|sbusData[14]<<5) & 0x07FF); 174 | channels[10] = ((sbusData[14]>>6|sbusData[15]<<2|sbusData[16]<<10) & 0x07FF); 175 | channels[11] = ((sbusData[16]>>1|sbusData[17]<<7) & 0x07FF); 176 | channels[12] = ((sbusData[17]>>4|sbusData[18]<<4) & 0x07FF); 177 | channels[13] = ((sbusData[18]>>7|sbusData[19]<<1|sbusData[20]<<9) & 0x07FF); 178 | channels[14] = ((sbusData[20]>>2|sbusData[21]<<6) & 0x07FF); 179 | channels[15] = ((sbusData[21]>>5|sbusData[22]<<3) & 0x07FF); 180 | #endif 181 | // DigiChannel 1 182 | /*if (sbusData[23] & (1<<0)) { 183 | channels[16] = 1; 184 | } 185 | else{ 186 | channels[16] = 0; 187 | } 188 | // DigiChannel 2 189 | if (sbusData[23] & (1<<1)) { 190 | channels[17] = 1; 191 | } 192 | else{ 193 | channels[17] = 0; 194 | }*/ 195 | // Failsafe 196 | failsafe_status = SBUS_SIGNAL_OK; 197 | if (sbusData[23] & (1<<2)) { 198 | failsafe_status = SBUS_SIGNAL_LOST; 199 | } 200 | if (sbusData[23] & (1<<3)) { 201 | failsafe_status = SBUS_SIGNAL_FAILSAFE; 202 | } 203 | 204 | } 205 | void FUTABA_SBUS::FeedLine(void){ 206 | if (port.available() > 24){ 207 | while(port.available() > 0){ 208 | inData = port.read(); 209 | switch (feedState){ 210 | case 0: 211 | if (inData != 0x0f){ 212 | while(port.available() > 0){//read the contents of in buffer this should resync the transmission 213 | inData = port.read(); 214 | } 215 | return; 216 | } 217 | else{ 218 | bufferIndex = 0; 219 | inBuffer[bufferIndex] = inData; 220 | inBuffer[24] = 0xff; 221 | feedState = 1; 222 | } 223 | break; 224 | case 1: 225 | bufferIndex ++; 226 | inBuffer[bufferIndex] = inData; 227 | if (bufferIndex < 24 && port.available() == 0){ 228 | feedState = 0; 229 | } 230 | if (bufferIndex == 24){ 231 | feedState = 0; 232 | if (inBuffer[0]==0x0f && inBuffer[24] == 0x00){ 233 | memcpy(sbusData,inBuffer,25); 234 | toChannels = 1; 235 | } 236 | } 237 | break; 238 | } 239 | } 240 | } 241 | } 242 | 243 | -------------------------------------------------------------------------------- /FUTABA_SBUS/FUTABA_SBUS.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef FUTABA_SBUS_h 3 | #define FUTABA_SBUS_h 4 | 5 | #include 6 | 7 | 8 | #define SBUS_SIGNAL_OK 0x00 9 | #define SBUS_SIGNAL_LOST 0x01 10 | #define SBUS_SIGNAL_FAILSAFE 0x03 11 | #define BAUDRATE 100000 12 | #define port Serial 13 | #define ALL_CHANNELS 14 | 15 | 16 | class FUTABA_SBUS 17 | { 18 | public: 19 | uint8_t sbusData[25]; 20 | int16_t channels[18]; 21 | int16_t servos[18]; 22 | uint8_t failsafe_status; 23 | int sbus_passthrough; 24 | int toChannels; 25 | void begin(void); 26 | int16_t Channel(uint8_t ch); 27 | uint8_t DigiChannel(uint8_t ch); 28 | void Servo(uint8_t ch, int16_t position); 29 | void DigiServo(uint8_t ch, uint8_t position); 30 | uint8_t Failsafe(void); 31 | void PassthroughSet(int mode); 32 | int PassthroughRet(void); 33 | void UpdateServos(void); 34 | void UpdateChannels(void); 35 | void FeedLine(void); 36 | private: 37 | uint8_t byte_in_sbus; 38 | uint8_t bit_in_sbus; 39 | uint8_t ch; 40 | uint8_t bit_in_channel; 41 | uint8_t bit_in_servo; 42 | uint8_t inBuffer[25]; 43 | int bufferIndex; 44 | uint8_t inData; 45 | int feedState; 46 | 47 | }; 48 | 49 | #endif -------------------------------------------------------------------------------- /FUTABA_SBUS/examples/sbus_example/sbus_example.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | FUTABA_SBUS sBus; 6 | 7 | 8 | void setup(){ 9 | sBus.begin(); 10 | Serial.begin(115200); 11 | } 12 | 13 | void loop(){ 14 | sBus.FeedLine(); 15 | if (sBus.toChannels == 1){ 16 | sBus.UpdateServos(); 17 | sBus.UpdateChannels(); 18 | sBus.toChannels = 0; 19 | Serial< 3 | FUTABA_SBUS sBus; 4 | byte Mode; 5 | 6 | void setup() 7 | { 8 | pinMode( A4 , INPUT_PULLUP); 9 | Mode = GetConfigState(); 10 | if (Mode==0) 11 | { 12 | //config mode 13 | Serial.begin(9600); 14 | } 15 | else 16 | { 17 | // normal mode 18 | //////// BANK A ////////// 19 | pinMode(2, OUTPUT); 20 | pinMode(3, OUTPUT); 21 | pinMode(4, OUTPUT); 22 | pinMode(5, OUTPUT); 23 | pinMode(6, OUTPUT); 24 | pinMode(7, OUTPUT); 25 | pinMode(8, OUTPUT); 26 | pinMode(9, OUTPUT); 27 | //////// BANK B ////////// 28 | pinMode(10, OUTPUT); 29 | pinMode(11, OUTPUT); 30 | pinMode(12, OUTPUT); 31 | pinMode(13, OUTPUT); 32 | pinMode(A0, OUTPUT); 33 | pinMode(A1, OUTPUT); 34 | pinMode(A2, OUTPUT); 35 | pinMode(A3, OUTPUT); 36 | PrepareCFG(); 37 | sBus.begin(); 38 | Timer1_init(); 39 | } 40 | } 41 | uint32_t lastTime = 0; 42 | uint32_t time = 0; 43 | 44 | void loop() 45 | { 46 | if (Mode==0) 47 | { 48 | if (Serial.available()) 49 | CallConfig(); 50 | } 51 | else 52 | { 53 | sBus.FeedLine(); 54 | if (sBus.toChannels == 1){ 55 | sBus.UpdateChannels(); 56 | sBus.toChannels = 0; 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /SBUS/config.h: -------------------------------------------------------------------------------- 1 | #ifndef CONFIG 2 | #define CONFIG 3 | #include 4 | 5 | #define CHANNELS_COUNT 16 6 | volatile uint8_t ChannelsMapA[CHANNELS_COUNT] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; 7 | volatile uint8_t ChannelsMapB[CHANNELS_COUNT] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; 8 | volatile uint8_t PPM_A = 0; 9 | volatile uint8_t PPM_B = 0; 10 | volatile uint8_t ChannelsBankA = 0; 11 | volatile uint8_t ChannelsBankB = 0; 12 | volatile uint8_t OCR_BANK_A = 0; 13 | volatile uint8_t OCR_BANK_B = 0; 14 | 15 | #define CH0_on PORTD |= (1<<2) //D2 16 | #define CH0_off PORTD &= 0xFB //D2 17 | 18 | #define CH1_on PORTD |= (1<<3) //D3 19 | #define CH1_off PORTD &= 0xF7 //D3 20 | 21 | #define CH2_on PORTD |= (1<<4) //D4 22 | #define CH2_off PORTD &= 0xEF //D4 23 | 24 | #define CH3_on PORTD |= (1<<5) //D5 25 | #define CH3_off PORTD &= 0xDF //D5 26 | 27 | #define CH4_on PORTD |= (1<<6) //D6 28 | #define CH4_off PORTD &= 0xBF //D6 29 | 30 | #define CH5_on PORTD |= (1<<7) //D7 31 | #define CH5_off PORTD &= 0x7F //D7 32 | 33 | #define CH6_on PORTB |= 1 //D8 34 | #define CH6_off PORTB &= 0xFE //D8 35 | 36 | #define CH7_on PORTB |= (1<<1) //D9 37 | #define CH7_off PORTB &= 0xFD //D9 38 | 39 | #define CH8_on PORTB |= (1<<2) //D10 40 | #define CH8_off PORTB &= 0xFB //D10 41 | 42 | #define CH9_on PORTB |= (1<<3) //D11 43 | #define CH9_off PORTB &= 0xF7 //D11 44 | 45 | #define CH10_on PORTB |= (1<<4) //D12 46 | #define CH10_off PORTB &= 0xED //D12 47 | 48 | #define CH11_on PORTB |= (1<<5) //D13 49 | #define CH11_off PORTB &= 0xDF //D13 50 | 51 | #define CH12_on PORTC |= 1 //A0 52 | #define CH12_off PORTC &= 0xFE //A0 53 | 54 | #define CH13_on PORTC |= (1<<1) //A1 55 | #define CH13_off PORTC &= 0xFD //A1 56 | 57 | #define CH14_on PORTC |= (1<<2) //A2 58 | #define CH14_off PORTC &= 0xFB //A2 59 | 60 | #define CH15_on PORTC |= (1<<3) //A3 61 | #define CH15_off PORTC &= 0xF7 //A3 62 | 63 | 64 | //#define SET_TIME_A(x) Set_TimeA( x ) 65 | //#define SET_TIME_B(x) Set_TimeB( x ) 66 | #define SET_TIME_PPM_A(x) Set_Time_PPMA( x ) 67 | #define SET_TIME_PPM_B(x) Set_Time_PPMB( x ) 68 | 69 | 70 | // EEPROM Addr 71 | // Bank A 72 | #define ADDR_PPM_BANK_A 0 73 | #define ADDR_TIMER_LOOPS_A 1 74 | #define ADDR_CHANNELS_A 2 75 | #define ADDR_CHANNEL_MAP_A 3 76 | // Bank B 77 | #define ADDR_PPM_BANK_B 19 78 | #define ADDR_TIMER_LOOPS_B 20 79 | #define ADDR_CHANNELS_B 21 80 | #define ADDR_CHANNEL_MAP_B 22 81 | 82 | #endif 83 | -------------------------------------------------------------------------------- /SBUS/config.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | byte GetConfigState() 4 | { 5 | return digitalRead(A4); 6 | } 7 | 8 | byte buf[41]; 9 | byte buf_ptr = 0; 10 | 11 | bool bufValid() 12 | { 13 | return (buf[0]==0xaa) && (buf[40]==0x5d); 14 | } 15 | 16 | void CallConfig() 17 | { 18 | byte b = Serial.read(); 19 | if (b == 0xaa) 20 | { 21 | buf_ptr = 0; 22 | } 23 | if (buf_ptr < 41) 24 | { 25 | buf[buf_ptr] = b; 26 | buf_ptr++; 27 | } 28 | 29 | if (buf_ptr > 40 && bufValid()) 30 | CallCommand(); 31 | } 32 | 33 | /* 34 | Packet: 35 | 0 - start byte 0xaa 36 | 1 - command (R - read / W - write) 37 | 2 - PPM Bank A 38 | 3 - Timer2 loops to Bank A 39 | 4 - Channels bank A 40 | 5:20 - channel map bank A 41 | 21 - ppm bank B 42 | 22 - Timer2 loops to Bank B 43 | 23 - Channels bank B 44 | 24:39 - channel map bank B 45 | 40 - check byte 0x5d 46 | */ 47 | 48 | void CallCommand() 49 | { 50 | if (buf[1]=='R') CallReadCFG(); 51 | if (buf[1]=='W') CallWriteCFG(); 52 | } 53 | 54 | void CallReadCFG() 55 | { 56 | // Bank A 57 | buf[2] = EEPROM.read(ADDR_PPM_BANK_A); 58 | buf[3] = EEPROM.read(ADDR_TIMER_LOOPS_A); 59 | buf[4] = EEPROM.read(ADDR_CHANNELS_A); 60 | for(int i=0;i<16;i++) 61 | buf[i+5] = EEPROM.read(ADDR_CHANNEL_MAP_A + i); 62 | // Bank B 63 | buf[21] = EEPROM.read(ADDR_PPM_BANK_B); 64 | buf[22] = EEPROM.read(ADDR_TIMER_LOOPS_B); 65 | buf[23] = EEPROM.read(ADDR_CHANNELS_B); 66 | for(int i=0;i<16;i++) 67 | buf[i+24] = EEPROM.read(ADDR_CHANNEL_MAP_B + i); 68 | 69 | for (int i=0;i<41;i++) 70 | Serial.write(buf[i]); 71 | } 72 | 73 | void CallWriteCFG() 74 | { 75 | // Bank A 76 | EEPROM.write(ADDR_PPM_BANK_A, buf[2]); 77 | EEPROM.write(ADDR_TIMER_LOOPS_A, buf[3]); 78 | EEPROM.write(ADDR_CHANNELS_A, buf[4]); 79 | for(int i=0;i<16;i++) 80 | EEPROM.write(ADDR_CHANNEL_MAP_A + i, buf[i+5]); 81 | // Bank B 82 | EEPROM.write(ADDR_PPM_BANK_B, buf[21]); 83 | EEPROM.write(ADDR_TIMER_LOOPS_B, buf[22]); 84 | EEPROM.write(ADDR_CHANNELS_B, buf[23]); 85 | for(int i=0;i<16;i++) 86 | EEPROM.write(ADDR_CHANNEL_MAP_B + i, buf[i+24]); 87 | } 88 | 89 | void PrepareCFG() 90 | { 91 | // Bank A 92 | PPM_A = EEPROM.read(ADDR_PPM_BANK_A); 93 | if (PPM_A>1) PPM_A = 0; 94 | OCR_BANK_A = EEPROM.read(ADDR_TIMER_LOOPS_A); 95 | if (OCR_BANK_A>10) OCR_BANK_A = 5; 96 | ChannelsBankA = EEPROM.read(ADDR_CHANNELS_A); 97 | if (ChannelsBankA>16) ChannelsBankA = 8; 98 | for(int i=0;i<16;i++) 99 | { 100 | ChannelsMapA[i] = EEPROM.read(ADDR_CHANNEL_MAP_A + i); 101 | if (ChannelsMapA[i]>16) ChannelsMapA[i] = i; 102 | } 103 | // Bank B 104 | PPM_B = EEPROM.read(ADDR_PPM_BANK_B); 105 | if (PPM_B>1) PPM_B = 0; 106 | OCR_BANK_B = EEPROM.read(ADDR_TIMER_LOOPS_B); 107 | if (OCR_BANK_B>10) OCR_BANK_B = 5; 108 | ChannelsBankB = EEPROM.read(ADDR_CHANNELS_B); 109 | if (ChannelsBankB>16) ChannelsBankB = 8; 110 | for(int i=0;i<16;i++) 111 | { 112 | ChannelsMapB[i] = EEPROM.read(ADDR_CHANNEL_MAP_B + i); 113 | if (ChannelsMapB[i]>16) 114 | { 115 | if (i<8) ChannelsMapB[i] = i+8; 116 | else ChannelsMapB[i] = i; 117 | } 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /SBUS/servo.ino: -------------------------------------------------------------------------------- 1 | volatile uint8_t curr_chA=0; 2 | volatile uint8_t curr_chB=0; 3 | uint8_t cntA = 0; 4 | uint8_t cntB = 0; 5 | volatile uint8_t State_chA=0; 6 | volatile uint8_t State_chB=0; 7 | 8 | void Timer1_init() 9 | { 10 | TCCR1B = 0; //stop timer 11 | TCCR1A = 0; 12 | TCNT1 = 0; //setup 13 | TCCR1A = 0; 14 | TCCR1B = 0<OCR_BANK_A){ 36 | // end of frame to bank A 37 | curr_chA = 0; 38 | if (PPM_A == 1) 39 | { 40 | // PPM generator 41 | CH1_off; 42 | State_chA=0; 43 | OCR1A = TCNT1 + 400; 44 | } 45 | else 46 | { 47 | // Servo 48 | if (ChannelsMapA[curr_chA] < 16) OCR1A = TCNT1 + (sBus.channels[ChannelsMapA[curr_chA]]+2000); 49 | else OCR1A = TCNT1 + sBus.Failsafe() * 2000 + 2000; 50 | //OCR1A = TCNT1 + Set_TimeA(curr_chA); 51 | ServoOn(curr_chA); 52 | } 53 | cntA = 0; 54 | } 55 | 56 | cntB++; 57 | if (cntB>OCR_BANK_B){ 58 | curr_chB = 0; 59 | if (PPM_B == 1) 60 | { 61 | CH9_off; 62 | State_chB=0; 63 | OCR1B = TCNT1 + 400; 64 | } 65 | else 66 | { 67 | if (ChannelsMapB[curr_chB] < 16) OCR1B = TCNT1 + (sBus.channels[ChannelsMapB[curr_chB]]+2000); 68 | else OCR1B = TCNT1 + sBus.Failsafe() * 2000 + 2000; 69 | //OCR1B = TCNT1 + Set_TimeB(curr_chB); 70 | ServoOn(curr_chB+8); 71 | } 72 | cntB=0; 73 | } 74 | } 75 | 76 | ISR (TIMER1_COMPA_vect) 77 | { 78 | if (PPM_A == 1) UpdatePPMA(); 79 | else 80 | UpdateBankA(); 81 | } 82 | 83 | ISR (TIMER1_COMPB_vect) 84 | { 85 | if (PPM_B == 1) UpdatePPMB(); 86 | else 87 | UpdateBankB(); 88 | } 89 | 90 | void UpdateBankA() 91 | { 92 | ServoOff(curr_chA); 93 | curr_chA++; 94 | if (curr_chA 11 | /// The main entry point for the application. 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new frmMain()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SBUSDecoderCFG/SBUSDecoderCFG/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SBUSDecoderCFG")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Ingosstrakh")] 12 | [assembly: AssemblyProduct("SBUSDecoderCFG")] 13 | [assembly: AssemblyCopyright("Copyright © Ingosstrakh 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("35d21819-05f3-4d11-bec5-cca700213568")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /SBUSDecoderCFG/SBUSDecoderCFG/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SBUSDecoderCFG.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SBUSDecoderCFG.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /SBUSDecoderCFG/SBUSDecoderCFG/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /SBUSDecoderCFG/SBUSDecoderCFG/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SBUSDecoderCFG.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /SBUSDecoderCFG/SBUSDecoderCFG/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SBUSDecoderCFG/SBUSDecoderCFG/SBUSDecoderCFG.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {115BA9C0-37A8-4D77-8267-4AB86082B889} 9 | WinExe 10 | Properties 11 | SBUSDecoderCFG 12 | SBUSDecoderCFG 13 | v3.5 14 | 512 15 | 16 | 17 | x86 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | x86 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | Form 49 | 50 | 51 | frmMain.cs 52 | 53 | 54 | 55 | 56 | frmMain.cs 57 | 58 | 59 | ResXFileCodeGenerator 60 | Resources.Designer.cs 61 | Designer 62 | 63 | 64 | True 65 | Resources.resx 66 | 67 | 68 | SettingsSingleFileGenerator 69 | Settings.Designer.cs 70 | 71 | 72 | True 73 | Settings.settings 74 | True 75 | 76 | 77 | 78 | 85 | -------------------------------------------------------------------------------- /SBUSDecoderCFG/SBUSDecoderCFG/frmMain.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SBUSDecoderCFG 2 | { 3 | partial class frmMain 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | this.panel1 = new System.Windows.Forms.Panel(); 33 | this.btnWrite = new System.Windows.Forms.Button(); 34 | this.btnRead = new System.Windows.Forms.Button(); 35 | this.cbPorts = new System.Windows.Forms.ComboBox(); 36 | this.COMPort = new System.IO.Ports.SerialPort(this.components); 37 | this.panel2 = new System.Windows.Forms.Panel(); 38 | this.groupBox2 = new System.Windows.Forms.GroupBox(); 39 | this.cbChB16 = new System.Windows.Forms.ComboBox(); 40 | this.label20 = new System.Windows.Forms.Label(); 41 | this.cbChB13 = new System.Windows.Forms.ComboBox(); 42 | this.label21 = new System.Windows.Forms.Label(); 43 | this.cbChB14 = new System.Windows.Forms.ComboBox(); 44 | this.label22 = new System.Windows.Forms.Label(); 45 | this.cbChB15 = new System.Windows.Forms.ComboBox(); 46 | this.label23 = new System.Windows.Forms.Label(); 47 | this.cbChB10 = new System.Windows.Forms.ComboBox(); 48 | this.label24 = new System.Windows.Forms.Label(); 49 | this.cbChB11 = new System.Windows.Forms.ComboBox(); 50 | this.label25 = new System.Windows.Forms.Label(); 51 | this.cbChB12 = new System.Windows.Forms.ComboBox(); 52 | this.label26 = new System.Windows.Forms.Label(); 53 | this.cbChB7 = new System.Windows.Forms.ComboBox(); 54 | this.label27 = new System.Windows.Forms.Label(); 55 | this.cbChB8 = new System.Windows.Forms.ComboBox(); 56 | this.label28 = new System.Windows.Forms.Label(); 57 | this.cbChB9 = new System.Windows.Forms.ComboBox(); 58 | this.label29 = new System.Windows.Forms.Label(); 59 | this.cbChB4 = new System.Windows.Forms.ComboBox(); 60 | this.label30 = new System.Windows.Forms.Label(); 61 | this.cbChB6 = new System.Windows.Forms.ComboBox(); 62 | this.label31 = new System.Windows.Forms.Label(); 63 | this.cbChB5 = new System.Windows.Forms.ComboBox(); 64 | this.label32 = new System.Windows.Forms.Label(); 65 | this.cbChB3 = new System.Windows.Forms.ComboBox(); 66 | this.label33 = new System.Windows.Forms.Label(); 67 | this.cbChB2 = new System.Windows.Forms.ComboBox(); 68 | this.label34 = new System.Windows.Forms.Label(); 69 | this.cbChB1 = new System.Windows.Forms.ComboBox(); 70 | this.label35 = new System.Windows.Forms.Label(); 71 | this.cbChannelsB = new System.Windows.Forms.ComboBox(); 72 | this.label36 = new System.Windows.Forms.Label(); 73 | this.label37 = new System.Windows.Forms.Label(); 74 | this.cbFrameB = new System.Windows.Forms.ComboBox(); 75 | this.label38 = new System.Windows.Forms.Label(); 76 | this.chkPPMB = new System.Windows.Forms.CheckBox(); 77 | this.splitter1 = new System.Windows.Forms.Splitter(); 78 | this.groupBox1 = new System.Windows.Forms.GroupBox(); 79 | this.cbChA16 = new System.Windows.Forms.ComboBox(); 80 | this.label19 = new System.Windows.Forms.Label(); 81 | this.cbChA13 = new System.Windows.Forms.ComboBox(); 82 | this.label16 = new System.Windows.Forms.Label(); 83 | this.cbChA14 = new System.Windows.Forms.ComboBox(); 84 | this.label17 = new System.Windows.Forms.Label(); 85 | this.cbChA15 = new System.Windows.Forms.ComboBox(); 86 | this.label18 = new System.Windows.Forms.Label(); 87 | this.cbChA10 = new System.Windows.Forms.ComboBox(); 88 | this.label13 = new System.Windows.Forms.Label(); 89 | this.cbChA11 = new System.Windows.Forms.ComboBox(); 90 | this.label14 = new System.Windows.Forms.Label(); 91 | this.cbChA12 = new System.Windows.Forms.ComboBox(); 92 | this.label15 = new System.Windows.Forms.Label(); 93 | this.cbChA7 = new System.Windows.Forms.ComboBox(); 94 | this.label12 = new System.Windows.Forms.Label(); 95 | this.cbChA8 = new System.Windows.Forms.ComboBox(); 96 | this.label11 = new System.Windows.Forms.Label(); 97 | this.cbChA9 = new System.Windows.Forms.ComboBox(); 98 | this.label10 = new System.Windows.Forms.Label(); 99 | this.cbChA4 = new System.Windows.Forms.ComboBox(); 100 | this.label9 = new System.Windows.Forms.Label(); 101 | this.cbChA6 = new System.Windows.Forms.ComboBox(); 102 | this.label8 = new System.Windows.Forms.Label(); 103 | this.cbChA5 = new System.Windows.Forms.ComboBox(); 104 | this.label7 = new System.Windows.Forms.Label(); 105 | this.cbChA3 = new System.Windows.Forms.ComboBox(); 106 | this.label6 = new System.Windows.Forms.Label(); 107 | this.cbChA2 = new System.Windows.Forms.ComboBox(); 108 | this.label5 = new System.Windows.Forms.Label(); 109 | this.cbChA1 = new System.Windows.Forms.ComboBox(); 110 | this.label4 = new System.Windows.Forms.Label(); 111 | this.cbChannelsA = new System.Windows.Forms.ComboBox(); 112 | this.label3 = new System.Windows.Forms.Label(); 113 | this.label2 = new System.Windows.Forms.Label(); 114 | this.cbFrameA = new System.Windows.Forms.ComboBox(); 115 | this.label1 = new System.Windows.Forms.Label(); 116 | this.chkPPMA = new System.Windows.Forms.CheckBox(); 117 | this.panel1.SuspendLayout(); 118 | this.panel2.SuspendLayout(); 119 | this.groupBox2.SuspendLayout(); 120 | this.groupBox1.SuspendLayout(); 121 | this.SuspendLayout(); 122 | // 123 | // panel1 124 | // 125 | this.panel1.Controls.Add(this.btnWrite); 126 | this.panel1.Controls.Add(this.btnRead); 127 | this.panel1.Controls.Add(this.cbPorts); 128 | this.panel1.Dock = System.Windows.Forms.DockStyle.Left; 129 | this.panel1.Location = new System.Drawing.Point(0, 0); 130 | this.panel1.Name = "panel1"; 131 | this.panel1.Size = new System.Drawing.Size(146, 272); 132 | this.panel1.TabIndex = 0; 133 | // 134 | // btnWrite 135 | // 136 | this.btnWrite.Location = new System.Drawing.Point(12, 77); 137 | this.btnWrite.Name = "btnWrite"; 138 | this.btnWrite.Size = new System.Drawing.Size(75, 23); 139 | this.btnWrite.TabIndex = 2; 140 | this.btnWrite.Text = "Write"; 141 | this.btnWrite.UseVisualStyleBackColor = true; 142 | this.btnWrite.Click += new System.EventHandler(this.btnWrite_Click); 143 | // 144 | // btnRead 145 | // 146 | this.btnRead.Location = new System.Drawing.Point(12, 48); 147 | this.btnRead.Name = "btnRead"; 148 | this.btnRead.Size = new System.Drawing.Size(75, 23); 149 | this.btnRead.TabIndex = 1; 150 | this.btnRead.Text = "Read"; 151 | this.btnRead.UseVisualStyleBackColor = true; 152 | this.btnRead.Click += new System.EventHandler(this.btnRead_Click); 153 | // 154 | // cbPorts 155 | // 156 | this.cbPorts.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 157 | this.cbPorts.FormattingEnabled = true; 158 | this.cbPorts.Location = new System.Drawing.Point(12, 12); 159 | this.cbPorts.Name = "cbPorts"; 160 | this.cbPorts.Size = new System.Drawing.Size(121, 21); 161 | this.cbPorts.TabIndex = 0; 162 | this.cbPorts.SelectedIndexChanged += new System.EventHandler(this.cbPorts_SelectedIndexChanged); 163 | // 164 | // panel2 165 | // 166 | this.panel2.Controls.Add(this.groupBox2); 167 | this.panel2.Controls.Add(this.splitter1); 168 | this.panel2.Controls.Add(this.groupBox1); 169 | this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; 170 | this.panel2.Location = new System.Drawing.Point(146, 0); 171 | this.panel2.Name = "panel2"; 172 | this.panel2.Size = new System.Drawing.Size(585, 272); 173 | this.panel2.TabIndex = 1; 174 | // 175 | // groupBox2 176 | // 177 | this.groupBox2.Controls.Add(this.cbChB16); 178 | this.groupBox2.Controls.Add(this.label20); 179 | this.groupBox2.Controls.Add(this.cbChB13); 180 | this.groupBox2.Controls.Add(this.label21); 181 | this.groupBox2.Controls.Add(this.cbChB14); 182 | this.groupBox2.Controls.Add(this.label22); 183 | this.groupBox2.Controls.Add(this.cbChB15); 184 | this.groupBox2.Controls.Add(this.label23); 185 | this.groupBox2.Controls.Add(this.cbChB10); 186 | this.groupBox2.Controls.Add(this.label24); 187 | this.groupBox2.Controls.Add(this.cbChB11); 188 | this.groupBox2.Controls.Add(this.label25); 189 | this.groupBox2.Controls.Add(this.cbChB12); 190 | this.groupBox2.Controls.Add(this.label26); 191 | this.groupBox2.Controls.Add(this.cbChB7); 192 | this.groupBox2.Controls.Add(this.label27); 193 | this.groupBox2.Controls.Add(this.cbChB8); 194 | this.groupBox2.Controls.Add(this.label28); 195 | this.groupBox2.Controls.Add(this.cbChB9); 196 | this.groupBox2.Controls.Add(this.label29); 197 | this.groupBox2.Controls.Add(this.cbChB4); 198 | this.groupBox2.Controls.Add(this.label30); 199 | this.groupBox2.Controls.Add(this.cbChB6); 200 | this.groupBox2.Controls.Add(this.label31); 201 | this.groupBox2.Controls.Add(this.cbChB5); 202 | this.groupBox2.Controls.Add(this.label32); 203 | this.groupBox2.Controls.Add(this.cbChB3); 204 | this.groupBox2.Controls.Add(this.label33); 205 | this.groupBox2.Controls.Add(this.cbChB2); 206 | this.groupBox2.Controls.Add(this.label34); 207 | this.groupBox2.Controls.Add(this.cbChB1); 208 | this.groupBox2.Controls.Add(this.label35); 209 | this.groupBox2.Controls.Add(this.cbChannelsB); 210 | this.groupBox2.Controls.Add(this.label36); 211 | this.groupBox2.Controls.Add(this.label37); 212 | this.groupBox2.Controls.Add(this.cbFrameB); 213 | this.groupBox2.Controls.Add(this.label38); 214 | this.groupBox2.Controls.Add(this.chkPPMB); 215 | this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; 216 | this.groupBox2.Location = new System.Drawing.Point(0, 135); 217 | this.groupBox2.Name = "groupBox2"; 218 | this.groupBox2.Size = new System.Drawing.Size(585, 137); 219 | this.groupBox2.TabIndex = 2; 220 | this.groupBox2.TabStop = false; 221 | this.groupBox2.Text = "Bank B"; 222 | // 223 | // cbChB16 224 | // 225 | this.cbChB16.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 226 | this.cbChB16.FormattingEnabled = true; 227 | this.cbChB16.Items.AddRange(new object[] { 228 | "1", 229 | "2", 230 | "3", 231 | "4", 232 | "5", 233 | "6", 234 | "7", 235 | "8", 236 | "9", 237 | "10", 238 | "11", 239 | "12", 240 | "13", 241 | "14", 242 | "15", 243 | "16", 244 | "FS"}); 245 | this.cbChB16.Location = new System.Drawing.Point(472, 50); 246 | this.cbChB16.Name = "cbChB16"; 247 | this.cbChB16.Size = new System.Drawing.Size(48, 21); 248 | this.cbChB16.TabIndex = 41; 249 | // 250 | // label20 251 | // 252 | this.label20.AutoSize = true; 253 | this.label20.Location = new System.Drawing.Point(441, 53); 254 | this.label20.Name = "label20"; 255 | this.label20.Size = new System.Drawing.Size(31, 13); 256 | this.label20.TabIndex = 40; 257 | this.label20.Text = "ch16"; 258 | // 259 | // cbChB13 260 | // 261 | this.cbChB13.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 262 | this.cbChB13.FormattingEnabled = true; 263 | this.cbChB13.Items.AddRange(new object[] { 264 | "1", 265 | "2", 266 | "3", 267 | "4", 268 | "5", 269 | "6", 270 | "7", 271 | "8", 272 | "9", 273 | "10", 274 | "11", 275 | "12", 276 | "13", 277 | "14", 278 | "15", 279 | "16", 280 | "FS"}); 281 | this.cbChB13.Location = new System.Drawing.Point(386, 50); 282 | this.cbChB13.Name = "cbChB13"; 283 | this.cbChB13.Size = new System.Drawing.Size(48, 21); 284 | this.cbChB13.TabIndex = 35; 285 | // 286 | // label21 287 | // 288 | this.label21.AutoSize = true; 289 | this.label21.Location = new System.Drawing.Point(355, 53); 290 | this.label21.Name = "label21"; 291 | this.label21.Size = new System.Drawing.Size(31, 13); 292 | this.label21.TabIndex = 34; 293 | this.label21.Text = "ch13"; 294 | // 295 | // cbChB14 296 | // 297 | this.cbChB14.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 298 | this.cbChB14.FormattingEnabled = true; 299 | this.cbChB14.Items.AddRange(new object[] { 300 | "1", 301 | "2", 302 | "3", 303 | "4", 304 | "5", 305 | "6", 306 | "7", 307 | "8", 308 | "9", 309 | "10", 310 | "11", 311 | "12", 312 | "13", 313 | "14", 314 | "15", 315 | "16", 316 | "FS"}); 317 | this.cbChB14.Location = new System.Drawing.Point(386, 77); 318 | this.cbChB14.Name = "cbChB14"; 319 | this.cbChB14.Size = new System.Drawing.Size(48, 21); 320 | this.cbChB14.TabIndex = 33; 321 | // 322 | // label22 323 | // 324 | this.label22.AutoSize = true; 325 | this.label22.Location = new System.Drawing.Point(355, 80); 326 | this.label22.Name = "label22"; 327 | this.label22.Size = new System.Drawing.Size(31, 13); 328 | this.label22.TabIndex = 32; 329 | this.label22.Text = "ch14"; 330 | // 331 | // cbChB15 332 | // 333 | this.cbChB15.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 334 | this.cbChB15.FormattingEnabled = true; 335 | this.cbChB15.Items.AddRange(new object[] { 336 | "1", 337 | "2", 338 | "3", 339 | "4", 340 | "5", 341 | "6", 342 | "7", 343 | "8", 344 | "9", 345 | "10", 346 | "11", 347 | "12", 348 | "13", 349 | "14", 350 | "15", 351 | "16", 352 | "FS"}); 353 | this.cbChB15.Location = new System.Drawing.Point(386, 104); 354 | this.cbChB15.Name = "cbChB15"; 355 | this.cbChB15.Size = new System.Drawing.Size(48, 21); 356 | this.cbChB15.TabIndex = 31; 357 | // 358 | // label23 359 | // 360 | this.label23.AutoSize = true; 361 | this.label23.Location = new System.Drawing.Point(355, 107); 362 | this.label23.Name = "label23"; 363 | this.label23.Size = new System.Drawing.Size(31, 13); 364 | this.label23.TabIndex = 30; 365 | this.label23.Text = "ch15"; 366 | // 367 | // cbChB10 368 | // 369 | this.cbChB10.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 370 | this.cbChB10.FormattingEnabled = true; 371 | this.cbChB10.Items.AddRange(new object[] { 372 | "1", 373 | "2", 374 | "3", 375 | "4", 376 | "5", 377 | "6", 378 | "7", 379 | "8", 380 | "9", 381 | "10", 382 | "11", 383 | "12", 384 | "13", 385 | "14", 386 | "15", 387 | "16", 388 | "FS"}); 389 | this.cbChB10.Location = new System.Drawing.Point(302, 50); 390 | this.cbChB10.Name = "cbChB10"; 391 | this.cbChB10.Size = new System.Drawing.Size(48, 21); 392 | this.cbChB10.TabIndex = 29; 393 | // 394 | // label24 395 | // 396 | this.label24.AutoSize = true; 397 | this.label24.Location = new System.Drawing.Point(271, 53); 398 | this.label24.Name = "label24"; 399 | this.label24.Size = new System.Drawing.Size(31, 13); 400 | this.label24.TabIndex = 28; 401 | this.label24.Text = "ch10"; 402 | // 403 | // cbChB11 404 | // 405 | this.cbChB11.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 406 | this.cbChB11.FormattingEnabled = true; 407 | this.cbChB11.Items.AddRange(new object[] { 408 | "1", 409 | "2", 410 | "3", 411 | "4", 412 | "5", 413 | "6", 414 | "7", 415 | "8", 416 | "9", 417 | "10", 418 | "11", 419 | "12", 420 | "13", 421 | "14", 422 | "15", 423 | "16", 424 | "FS"}); 425 | this.cbChB11.Location = new System.Drawing.Point(302, 77); 426 | this.cbChB11.Name = "cbChB11"; 427 | this.cbChB11.Size = new System.Drawing.Size(48, 21); 428 | this.cbChB11.TabIndex = 27; 429 | // 430 | // label25 431 | // 432 | this.label25.AutoSize = true; 433 | this.label25.Location = new System.Drawing.Point(271, 80); 434 | this.label25.Name = "label25"; 435 | this.label25.Size = new System.Drawing.Size(31, 13); 436 | this.label25.TabIndex = 26; 437 | this.label25.Text = "ch11"; 438 | // 439 | // cbChB12 440 | // 441 | this.cbChB12.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 442 | this.cbChB12.FormattingEnabled = true; 443 | this.cbChB12.Items.AddRange(new object[] { 444 | "1", 445 | "2", 446 | "3", 447 | "4", 448 | "5", 449 | "6", 450 | "7", 451 | "8", 452 | "9", 453 | "10", 454 | "11", 455 | "12", 456 | "13", 457 | "14", 458 | "15", 459 | "16", 460 | "FS"}); 461 | this.cbChB12.Location = new System.Drawing.Point(302, 104); 462 | this.cbChB12.Name = "cbChB12"; 463 | this.cbChB12.Size = new System.Drawing.Size(48, 21); 464 | this.cbChB12.TabIndex = 25; 465 | // 466 | // label26 467 | // 468 | this.label26.AutoSize = true; 469 | this.label26.Location = new System.Drawing.Point(271, 107); 470 | this.label26.Name = "label26"; 471 | this.label26.Size = new System.Drawing.Size(31, 13); 472 | this.label26.TabIndex = 24; 473 | this.label26.Text = "ch12"; 474 | // 475 | // cbChB7 476 | // 477 | this.cbChB7.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 478 | this.cbChB7.FormattingEnabled = true; 479 | this.cbChB7.Items.AddRange(new object[] { 480 | "1", 481 | "2", 482 | "3", 483 | "4", 484 | "5", 485 | "6", 486 | "7", 487 | "8", 488 | "9", 489 | "10", 490 | "11", 491 | "12", 492 | "13", 493 | "14", 494 | "15", 495 | "16", 496 | "FS"}); 497 | this.cbChB7.Location = new System.Drawing.Point(218, 50); 498 | this.cbChB7.Name = "cbChB7"; 499 | this.cbChB7.Size = new System.Drawing.Size(48, 21); 500 | this.cbChB7.TabIndex = 23; 501 | // 502 | // label27 503 | // 504 | this.label27.AutoSize = true; 505 | this.label27.Location = new System.Drawing.Point(187, 53); 506 | this.label27.Name = "label27"; 507 | this.label27.Size = new System.Drawing.Size(25, 13); 508 | this.label27.TabIndex = 22; 509 | this.label27.Text = "ch7"; 510 | // 511 | // cbChB8 512 | // 513 | this.cbChB8.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 514 | this.cbChB8.FormattingEnabled = true; 515 | this.cbChB8.Items.AddRange(new object[] { 516 | "1", 517 | "2", 518 | "3", 519 | "4", 520 | "5", 521 | "6", 522 | "7", 523 | "8", 524 | "9", 525 | "10", 526 | "11", 527 | "12", 528 | "13", 529 | "14", 530 | "15", 531 | "16", 532 | "FS"}); 533 | this.cbChB8.Location = new System.Drawing.Point(218, 77); 534 | this.cbChB8.Name = "cbChB8"; 535 | this.cbChB8.Size = new System.Drawing.Size(48, 21); 536 | this.cbChB8.TabIndex = 21; 537 | // 538 | // label28 539 | // 540 | this.label28.AutoSize = true; 541 | this.label28.Location = new System.Drawing.Point(187, 80); 542 | this.label28.Name = "label28"; 543 | this.label28.Size = new System.Drawing.Size(25, 13); 544 | this.label28.TabIndex = 20; 545 | this.label28.Text = "ch8"; 546 | // 547 | // cbChB9 548 | // 549 | this.cbChB9.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 550 | this.cbChB9.FormattingEnabled = true; 551 | this.cbChB9.Items.AddRange(new object[] { 552 | "1", 553 | "2", 554 | "3", 555 | "4", 556 | "5", 557 | "6", 558 | "7", 559 | "8", 560 | "9", 561 | "10", 562 | "11", 563 | "12", 564 | "13", 565 | "14", 566 | "15", 567 | "16", 568 | "FS"}); 569 | this.cbChB9.Location = new System.Drawing.Point(218, 104); 570 | this.cbChB9.Name = "cbChB9"; 571 | this.cbChB9.Size = new System.Drawing.Size(48, 21); 572 | this.cbChB9.TabIndex = 19; 573 | // 574 | // label29 575 | // 576 | this.label29.AutoSize = true; 577 | this.label29.Location = new System.Drawing.Point(187, 107); 578 | this.label29.Name = "label29"; 579 | this.label29.Size = new System.Drawing.Size(25, 13); 580 | this.label29.TabIndex = 18; 581 | this.label29.Text = "ch9"; 582 | // 583 | // cbChB4 584 | // 585 | this.cbChB4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 586 | this.cbChB4.FormattingEnabled = true; 587 | this.cbChB4.Items.AddRange(new object[] { 588 | "1", 589 | "2", 590 | "3", 591 | "4", 592 | "5", 593 | "6", 594 | "7", 595 | "8", 596 | "9", 597 | "10", 598 | "11", 599 | "12", 600 | "13", 601 | "14", 602 | "15", 603 | "16", 604 | "FS"}); 605 | this.cbChB4.Location = new System.Drawing.Point(133, 50); 606 | this.cbChB4.Name = "cbChB4"; 607 | this.cbChB4.Size = new System.Drawing.Size(48, 21); 608 | this.cbChB4.TabIndex = 17; 609 | // 610 | // label30 611 | // 612 | this.label30.AutoSize = true; 613 | this.label30.Location = new System.Drawing.Point(102, 53); 614 | this.label30.Name = "label30"; 615 | this.label30.Size = new System.Drawing.Size(25, 13); 616 | this.label30.TabIndex = 16; 617 | this.label30.Text = "ch4"; 618 | // 619 | // cbChB6 620 | // 621 | this.cbChB6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 622 | this.cbChB6.FormattingEnabled = true; 623 | this.cbChB6.Items.AddRange(new object[] { 624 | "1", 625 | "2", 626 | "3", 627 | "4", 628 | "5", 629 | "6", 630 | "7", 631 | "8", 632 | "9", 633 | "10", 634 | "11", 635 | "12", 636 | "13", 637 | "14", 638 | "15", 639 | "16", 640 | "FS"}); 641 | this.cbChB6.Location = new System.Drawing.Point(133, 104); 642 | this.cbChB6.Name = "cbChB6"; 643 | this.cbChB6.Size = new System.Drawing.Size(48, 21); 644 | this.cbChB6.TabIndex = 15; 645 | // 646 | // label31 647 | // 648 | this.label31.AutoSize = true; 649 | this.label31.Location = new System.Drawing.Point(102, 107); 650 | this.label31.Name = "label31"; 651 | this.label31.Size = new System.Drawing.Size(25, 13); 652 | this.label31.TabIndex = 14; 653 | this.label31.Text = "ch6"; 654 | // 655 | // cbChB5 656 | // 657 | this.cbChB5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 658 | this.cbChB5.FormattingEnabled = true; 659 | this.cbChB5.Items.AddRange(new object[] { 660 | "1", 661 | "2", 662 | "3", 663 | "4", 664 | "5", 665 | "6", 666 | "7", 667 | "8", 668 | "9", 669 | "10", 670 | "11", 671 | "12", 672 | "13", 673 | "14", 674 | "15", 675 | "16", 676 | "FS"}); 677 | this.cbChB5.Location = new System.Drawing.Point(133, 77); 678 | this.cbChB5.Name = "cbChB5"; 679 | this.cbChB5.Size = new System.Drawing.Size(48, 21); 680 | this.cbChB5.TabIndex = 13; 681 | // 682 | // label32 683 | // 684 | this.label32.AutoSize = true; 685 | this.label32.Location = new System.Drawing.Point(102, 80); 686 | this.label32.Name = "label32"; 687 | this.label32.Size = new System.Drawing.Size(25, 13); 688 | this.label32.TabIndex = 12; 689 | this.label32.Text = "ch5"; 690 | // 691 | // cbChB3 692 | // 693 | this.cbChB3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 694 | this.cbChB3.FormattingEnabled = true; 695 | this.cbChB3.Items.AddRange(new object[] { 696 | "1", 697 | "2", 698 | "3", 699 | "4", 700 | "5", 701 | "6", 702 | "7", 703 | "8", 704 | "9", 705 | "10", 706 | "11", 707 | "12", 708 | "13", 709 | "14", 710 | "15", 711 | "16", 712 | "FS"}); 713 | this.cbChB3.Location = new System.Drawing.Point(49, 104); 714 | this.cbChB3.Name = "cbChB3"; 715 | this.cbChB3.Size = new System.Drawing.Size(48, 21); 716 | this.cbChB3.TabIndex = 11; 717 | // 718 | // label33 719 | // 720 | this.label33.AutoSize = true; 721 | this.label33.Location = new System.Drawing.Point(18, 107); 722 | this.label33.Name = "label33"; 723 | this.label33.Size = new System.Drawing.Size(25, 13); 724 | this.label33.TabIndex = 10; 725 | this.label33.Text = "ch3"; 726 | // 727 | // cbChB2 728 | // 729 | this.cbChB2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 730 | this.cbChB2.FormattingEnabled = true; 731 | this.cbChB2.Items.AddRange(new object[] { 732 | "1", 733 | "2", 734 | "3", 735 | "4", 736 | "5", 737 | "6", 738 | "7", 739 | "8", 740 | "9", 741 | "10", 742 | "11", 743 | "12", 744 | "13", 745 | "14", 746 | "15", 747 | "16", 748 | "FS"}); 749 | this.cbChB2.Location = new System.Drawing.Point(49, 77); 750 | this.cbChB2.Name = "cbChB2"; 751 | this.cbChB2.Size = new System.Drawing.Size(48, 21); 752 | this.cbChB2.TabIndex = 9; 753 | // 754 | // label34 755 | // 756 | this.label34.AutoSize = true; 757 | this.label34.Location = new System.Drawing.Point(18, 80); 758 | this.label34.Name = "label34"; 759 | this.label34.Size = new System.Drawing.Size(25, 13); 760 | this.label34.TabIndex = 8; 761 | this.label34.Text = "ch2"; 762 | // 763 | // cbChB1 764 | // 765 | this.cbChB1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 766 | this.cbChB1.FormattingEnabled = true; 767 | this.cbChB1.Items.AddRange(new object[] { 768 | "1", 769 | "2", 770 | "3", 771 | "4", 772 | "5", 773 | "6", 774 | "7", 775 | "8", 776 | "9", 777 | "10", 778 | "11", 779 | "12", 780 | "13", 781 | "14", 782 | "15", 783 | "16", 784 | "FS"}); 785 | this.cbChB1.Location = new System.Drawing.Point(49, 50); 786 | this.cbChB1.Name = "cbChB1"; 787 | this.cbChB1.Size = new System.Drawing.Size(48, 21); 788 | this.cbChB1.TabIndex = 7; 789 | // 790 | // label35 791 | // 792 | this.label35.AutoSize = true; 793 | this.label35.Location = new System.Drawing.Point(18, 53); 794 | this.label35.Name = "label35"; 795 | this.label35.Size = new System.Drawing.Size(25, 13); 796 | this.label35.TabIndex = 6; 797 | this.label35.Text = "ch1"; 798 | // 799 | // cbChannelsB 800 | // 801 | this.cbChannelsB.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 802 | this.cbChannelsB.FormattingEnabled = true; 803 | this.cbChannelsB.Location = new System.Drawing.Point(299, 17); 804 | this.cbChannelsB.Name = "cbChannelsB"; 805 | this.cbChannelsB.Size = new System.Drawing.Size(69, 21); 806 | this.cbChannelsB.TabIndex = 5; 807 | // 808 | // label36 809 | // 810 | this.label36.AutoSize = true; 811 | this.label36.Location = new System.Drawing.Point(242, 20); 812 | this.label36.Name = "label36"; 813 | this.label36.Size = new System.Drawing.Size(51, 13); 814 | this.label36.TabIndex = 4; 815 | this.label36.Text = "Channels"; 816 | // 817 | // label37 818 | // 819 | this.label37.AutoSize = true; 820 | this.label37.Location = new System.Drawing.Point(206, 20); 821 | this.label37.Name = "label37"; 822 | this.label37.Size = new System.Drawing.Size(20, 13); 823 | this.label37.TabIndex = 3; 824 | this.label37.Text = "ms"; 825 | // 826 | // cbFrameB 827 | // 828 | this.cbFrameB.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 829 | this.cbFrameB.FormattingEnabled = true; 830 | this.cbFrameB.Items.AddRange(new object[] { 831 | "16", 832 | "20", 833 | "24", 834 | "28", 835 | "32", 836 | "36", 837 | "40"}); 838 | this.cbFrameB.Location = new System.Drawing.Point(148, 17); 839 | this.cbFrameB.Name = "cbFrameB"; 840 | this.cbFrameB.Size = new System.Drawing.Size(56, 21); 841 | this.cbFrameB.TabIndex = 2; 842 | this.cbFrameB.SelectedIndexChanged += new System.EventHandler(this.cbFrameB_SelectedIndexChanged); 843 | // 844 | // label38 845 | // 846 | this.label38.AutoSize = true; 847 | this.label38.Location = new System.Drawing.Point(106, 20); 848 | this.label38.Name = "label38"; 849 | this.label38.Size = new System.Drawing.Size(36, 13); 850 | this.label38.TabIndex = 1; 851 | this.label38.Text = "Frame"; 852 | // 853 | // chkPPMB 854 | // 855 | this.chkPPMB.AutoSize = true; 856 | this.chkPPMB.Location = new System.Drawing.Point(51, 19); 857 | this.chkPPMB.Name = "chkPPMB"; 858 | this.chkPPMB.Size = new System.Drawing.Size(49, 17); 859 | this.chkPPMB.TabIndex = 0; 860 | this.chkPPMB.Text = "PPM"; 861 | this.chkPPMB.UseVisualStyleBackColor = true; 862 | this.chkPPMB.CheckedChanged += new System.EventHandler(this.chkPPMB_CheckedChanged); 863 | // 864 | // splitter1 865 | // 866 | this.splitter1.Dock = System.Windows.Forms.DockStyle.Top; 867 | this.splitter1.Location = new System.Drawing.Point(0, 132); 868 | this.splitter1.Name = "splitter1"; 869 | this.splitter1.Size = new System.Drawing.Size(585, 3); 870 | this.splitter1.TabIndex = 1; 871 | this.splitter1.TabStop = false; 872 | // 873 | // groupBox1 874 | // 875 | this.groupBox1.Controls.Add(this.cbChA16); 876 | this.groupBox1.Controls.Add(this.label19); 877 | this.groupBox1.Controls.Add(this.cbChA13); 878 | this.groupBox1.Controls.Add(this.label16); 879 | this.groupBox1.Controls.Add(this.cbChA14); 880 | this.groupBox1.Controls.Add(this.label17); 881 | this.groupBox1.Controls.Add(this.cbChA15); 882 | this.groupBox1.Controls.Add(this.label18); 883 | this.groupBox1.Controls.Add(this.cbChA10); 884 | this.groupBox1.Controls.Add(this.label13); 885 | this.groupBox1.Controls.Add(this.cbChA11); 886 | this.groupBox1.Controls.Add(this.label14); 887 | this.groupBox1.Controls.Add(this.cbChA12); 888 | this.groupBox1.Controls.Add(this.label15); 889 | this.groupBox1.Controls.Add(this.cbChA7); 890 | this.groupBox1.Controls.Add(this.label12); 891 | this.groupBox1.Controls.Add(this.cbChA8); 892 | this.groupBox1.Controls.Add(this.label11); 893 | this.groupBox1.Controls.Add(this.cbChA9); 894 | this.groupBox1.Controls.Add(this.label10); 895 | this.groupBox1.Controls.Add(this.cbChA4); 896 | this.groupBox1.Controls.Add(this.label9); 897 | this.groupBox1.Controls.Add(this.cbChA6); 898 | this.groupBox1.Controls.Add(this.label8); 899 | this.groupBox1.Controls.Add(this.cbChA5); 900 | this.groupBox1.Controls.Add(this.label7); 901 | this.groupBox1.Controls.Add(this.cbChA3); 902 | this.groupBox1.Controls.Add(this.label6); 903 | this.groupBox1.Controls.Add(this.cbChA2); 904 | this.groupBox1.Controls.Add(this.label5); 905 | this.groupBox1.Controls.Add(this.cbChA1); 906 | this.groupBox1.Controls.Add(this.label4); 907 | this.groupBox1.Controls.Add(this.cbChannelsA); 908 | this.groupBox1.Controls.Add(this.label3); 909 | this.groupBox1.Controls.Add(this.label2); 910 | this.groupBox1.Controls.Add(this.cbFrameA); 911 | this.groupBox1.Controls.Add(this.label1); 912 | this.groupBox1.Controls.Add(this.chkPPMA); 913 | this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top; 914 | this.groupBox1.Location = new System.Drawing.Point(0, 0); 915 | this.groupBox1.Name = "groupBox1"; 916 | this.groupBox1.Size = new System.Drawing.Size(585, 132); 917 | this.groupBox1.TabIndex = 0; 918 | this.groupBox1.TabStop = false; 919 | this.groupBox1.Text = "Bank A"; 920 | // 921 | // cbChA16 922 | // 923 | this.cbChA16.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 924 | this.cbChA16.FormattingEnabled = true; 925 | this.cbChA16.Items.AddRange(new object[] { 926 | "1", 927 | "2", 928 | "3", 929 | "4", 930 | "5", 931 | "6", 932 | "7", 933 | "8", 934 | "9", 935 | "10", 936 | "11", 937 | "12", 938 | "13", 939 | "14", 940 | "15", 941 | "16", 942 | "FS"}); 943 | this.cbChA16.Location = new System.Drawing.Point(472, 50); 944 | this.cbChA16.Name = "cbChA16"; 945 | this.cbChA16.Size = new System.Drawing.Size(48, 21); 946 | this.cbChA16.TabIndex = 41; 947 | // 948 | // label19 949 | // 950 | this.label19.AutoSize = true; 951 | this.label19.Location = new System.Drawing.Point(441, 53); 952 | this.label19.Name = "label19"; 953 | this.label19.Size = new System.Drawing.Size(31, 13); 954 | this.label19.TabIndex = 40; 955 | this.label19.Text = "ch16"; 956 | // 957 | // cbChA13 958 | // 959 | this.cbChA13.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 960 | this.cbChA13.FormattingEnabled = true; 961 | this.cbChA13.Items.AddRange(new object[] { 962 | "1", 963 | "2", 964 | "3", 965 | "4", 966 | "5", 967 | "6", 968 | "7", 969 | "8", 970 | "9", 971 | "10", 972 | "11", 973 | "12", 974 | "13", 975 | "14", 976 | "15", 977 | "16", 978 | "FS"}); 979 | this.cbChA13.Location = new System.Drawing.Point(386, 50); 980 | this.cbChA13.Name = "cbChA13"; 981 | this.cbChA13.Size = new System.Drawing.Size(48, 21); 982 | this.cbChA13.TabIndex = 35; 983 | // 984 | // label16 985 | // 986 | this.label16.AutoSize = true; 987 | this.label16.Location = new System.Drawing.Point(355, 53); 988 | this.label16.Name = "label16"; 989 | this.label16.Size = new System.Drawing.Size(31, 13); 990 | this.label16.TabIndex = 34; 991 | this.label16.Text = "ch13"; 992 | // 993 | // cbChA14 994 | // 995 | this.cbChA14.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 996 | this.cbChA14.FormattingEnabled = true; 997 | this.cbChA14.Items.AddRange(new object[] { 998 | "1", 999 | "2", 1000 | "3", 1001 | "4", 1002 | "5", 1003 | "6", 1004 | "7", 1005 | "8", 1006 | "9", 1007 | "10", 1008 | "11", 1009 | "12", 1010 | "13", 1011 | "14", 1012 | "15", 1013 | "16", 1014 | "FS"}); 1015 | this.cbChA14.Location = new System.Drawing.Point(386, 77); 1016 | this.cbChA14.Name = "cbChA14"; 1017 | this.cbChA14.Size = new System.Drawing.Size(48, 21); 1018 | this.cbChA14.TabIndex = 33; 1019 | // 1020 | // label17 1021 | // 1022 | this.label17.AutoSize = true; 1023 | this.label17.Location = new System.Drawing.Point(355, 80); 1024 | this.label17.Name = "label17"; 1025 | this.label17.Size = new System.Drawing.Size(31, 13); 1026 | this.label17.TabIndex = 32; 1027 | this.label17.Text = "ch14"; 1028 | // 1029 | // cbChA15 1030 | // 1031 | this.cbChA15.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1032 | this.cbChA15.FormattingEnabled = true; 1033 | this.cbChA15.Items.AddRange(new object[] { 1034 | "1", 1035 | "2", 1036 | "3", 1037 | "4", 1038 | "5", 1039 | "6", 1040 | "7", 1041 | "8", 1042 | "9", 1043 | "10", 1044 | "11", 1045 | "12", 1046 | "13", 1047 | "14", 1048 | "15", 1049 | "16", 1050 | "FS"}); 1051 | this.cbChA15.Location = new System.Drawing.Point(386, 104); 1052 | this.cbChA15.Name = "cbChA15"; 1053 | this.cbChA15.Size = new System.Drawing.Size(48, 21); 1054 | this.cbChA15.TabIndex = 31; 1055 | // 1056 | // label18 1057 | // 1058 | this.label18.AutoSize = true; 1059 | this.label18.Location = new System.Drawing.Point(355, 107); 1060 | this.label18.Name = "label18"; 1061 | this.label18.Size = new System.Drawing.Size(31, 13); 1062 | this.label18.TabIndex = 30; 1063 | this.label18.Text = "ch15"; 1064 | // 1065 | // cbChA10 1066 | // 1067 | this.cbChA10.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1068 | this.cbChA10.FormattingEnabled = true; 1069 | this.cbChA10.Items.AddRange(new object[] { 1070 | "1", 1071 | "2", 1072 | "3", 1073 | "4", 1074 | "5", 1075 | "6", 1076 | "7", 1077 | "8", 1078 | "9", 1079 | "10", 1080 | "11", 1081 | "12", 1082 | "13", 1083 | "14", 1084 | "15", 1085 | "16", 1086 | "FS"}); 1087 | this.cbChA10.Location = new System.Drawing.Point(302, 50); 1088 | this.cbChA10.Name = "cbChA10"; 1089 | this.cbChA10.Size = new System.Drawing.Size(48, 21); 1090 | this.cbChA10.TabIndex = 29; 1091 | // 1092 | // label13 1093 | // 1094 | this.label13.AutoSize = true; 1095 | this.label13.Location = new System.Drawing.Point(271, 53); 1096 | this.label13.Name = "label13"; 1097 | this.label13.Size = new System.Drawing.Size(31, 13); 1098 | this.label13.TabIndex = 28; 1099 | this.label13.Text = "ch10"; 1100 | // 1101 | // cbChA11 1102 | // 1103 | this.cbChA11.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1104 | this.cbChA11.FormattingEnabled = true; 1105 | this.cbChA11.Items.AddRange(new object[] { 1106 | "1", 1107 | "2", 1108 | "3", 1109 | "4", 1110 | "5", 1111 | "6", 1112 | "7", 1113 | "8", 1114 | "9", 1115 | "10", 1116 | "11", 1117 | "12", 1118 | "13", 1119 | "14", 1120 | "15", 1121 | "16", 1122 | "FS"}); 1123 | this.cbChA11.Location = new System.Drawing.Point(302, 77); 1124 | this.cbChA11.Name = "cbChA11"; 1125 | this.cbChA11.Size = new System.Drawing.Size(48, 21); 1126 | this.cbChA11.TabIndex = 27; 1127 | // 1128 | // label14 1129 | // 1130 | this.label14.AutoSize = true; 1131 | this.label14.Location = new System.Drawing.Point(271, 80); 1132 | this.label14.Name = "label14"; 1133 | this.label14.Size = new System.Drawing.Size(31, 13); 1134 | this.label14.TabIndex = 26; 1135 | this.label14.Text = "ch11"; 1136 | // 1137 | // cbChA12 1138 | // 1139 | this.cbChA12.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1140 | this.cbChA12.FormattingEnabled = true; 1141 | this.cbChA12.Items.AddRange(new object[] { 1142 | "1", 1143 | "2", 1144 | "3", 1145 | "4", 1146 | "5", 1147 | "6", 1148 | "7", 1149 | "8", 1150 | "9", 1151 | "10", 1152 | "11", 1153 | "12", 1154 | "13", 1155 | "14", 1156 | "15", 1157 | "16", 1158 | "FS"}); 1159 | this.cbChA12.Location = new System.Drawing.Point(302, 104); 1160 | this.cbChA12.Name = "cbChA12"; 1161 | this.cbChA12.Size = new System.Drawing.Size(48, 21); 1162 | this.cbChA12.TabIndex = 25; 1163 | // 1164 | // label15 1165 | // 1166 | this.label15.AutoSize = true; 1167 | this.label15.Location = new System.Drawing.Point(271, 107); 1168 | this.label15.Name = "label15"; 1169 | this.label15.Size = new System.Drawing.Size(31, 13); 1170 | this.label15.TabIndex = 24; 1171 | this.label15.Text = "ch12"; 1172 | // 1173 | // cbChA7 1174 | // 1175 | this.cbChA7.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1176 | this.cbChA7.FormattingEnabled = true; 1177 | this.cbChA7.Items.AddRange(new object[] { 1178 | "1", 1179 | "2", 1180 | "3", 1181 | "4", 1182 | "5", 1183 | "6", 1184 | "7", 1185 | "8", 1186 | "9", 1187 | "10", 1188 | "11", 1189 | "12", 1190 | "13", 1191 | "14", 1192 | "15", 1193 | "16", 1194 | "FS"}); 1195 | this.cbChA7.Location = new System.Drawing.Point(218, 50); 1196 | this.cbChA7.Name = "cbChA7"; 1197 | this.cbChA7.Size = new System.Drawing.Size(48, 21); 1198 | this.cbChA7.TabIndex = 23; 1199 | // 1200 | // label12 1201 | // 1202 | this.label12.AutoSize = true; 1203 | this.label12.Location = new System.Drawing.Point(187, 53); 1204 | this.label12.Name = "label12"; 1205 | this.label12.Size = new System.Drawing.Size(25, 13); 1206 | this.label12.TabIndex = 22; 1207 | this.label12.Text = "ch7"; 1208 | // 1209 | // cbChA8 1210 | // 1211 | this.cbChA8.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1212 | this.cbChA8.FormattingEnabled = true; 1213 | this.cbChA8.Items.AddRange(new object[] { 1214 | "1", 1215 | "2", 1216 | "3", 1217 | "4", 1218 | "5", 1219 | "6", 1220 | "7", 1221 | "8", 1222 | "9", 1223 | "10", 1224 | "11", 1225 | "12", 1226 | "13", 1227 | "14", 1228 | "15", 1229 | "16", 1230 | "FS"}); 1231 | this.cbChA8.Location = new System.Drawing.Point(218, 77); 1232 | this.cbChA8.Name = "cbChA8"; 1233 | this.cbChA8.Size = new System.Drawing.Size(48, 21); 1234 | this.cbChA8.TabIndex = 21; 1235 | // 1236 | // label11 1237 | // 1238 | this.label11.AutoSize = true; 1239 | this.label11.Location = new System.Drawing.Point(187, 80); 1240 | this.label11.Name = "label11"; 1241 | this.label11.Size = new System.Drawing.Size(25, 13); 1242 | this.label11.TabIndex = 20; 1243 | this.label11.Text = "ch8"; 1244 | // 1245 | // cbChA9 1246 | // 1247 | this.cbChA9.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1248 | this.cbChA9.FormattingEnabled = true; 1249 | this.cbChA9.Items.AddRange(new object[] { 1250 | "1", 1251 | "2", 1252 | "3", 1253 | "4", 1254 | "5", 1255 | "6", 1256 | "7", 1257 | "8", 1258 | "9", 1259 | "10", 1260 | "11", 1261 | "12", 1262 | "13", 1263 | "14", 1264 | "15", 1265 | "16", 1266 | "FS"}); 1267 | this.cbChA9.Location = new System.Drawing.Point(218, 104); 1268 | this.cbChA9.Name = "cbChA9"; 1269 | this.cbChA9.Size = new System.Drawing.Size(48, 21); 1270 | this.cbChA9.TabIndex = 19; 1271 | // 1272 | // label10 1273 | // 1274 | this.label10.AutoSize = true; 1275 | this.label10.Location = new System.Drawing.Point(187, 107); 1276 | this.label10.Name = "label10"; 1277 | this.label10.Size = new System.Drawing.Size(25, 13); 1278 | this.label10.TabIndex = 18; 1279 | this.label10.Text = "ch9"; 1280 | // 1281 | // cbChA4 1282 | // 1283 | this.cbChA4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1284 | this.cbChA4.FormattingEnabled = true; 1285 | this.cbChA4.Items.AddRange(new object[] { 1286 | "1", 1287 | "2", 1288 | "3", 1289 | "4", 1290 | "5", 1291 | "6", 1292 | "7", 1293 | "8", 1294 | "9", 1295 | "10", 1296 | "11", 1297 | "12", 1298 | "13", 1299 | "14", 1300 | "15", 1301 | "16", 1302 | "FS"}); 1303 | this.cbChA4.Location = new System.Drawing.Point(133, 50); 1304 | this.cbChA4.Name = "cbChA4"; 1305 | this.cbChA4.Size = new System.Drawing.Size(48, 21); 1306 | this.cbChA4.TabIndex = 17; 1307 | // 1308 | // label9 1309 | // 1310 | this.label9.AutoSize = true; 1311 | this.label9.Location = new System.Drawing.Point(102, 53); 1312 | this.label9.Name = "label9"; 1313 | this.label9.Size = new System.Drawing.Size(25, 13); 1314 | this.label9.TabIndex = 16; 1315 | this.label9.Text = "ch4"; 1316 | // 1317 | // cbChA6 1318 | // 1319 | this.cbChA6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1320 | this.cbChA6.FormattingEnabled = true; 1321 | this.cbChA6.Items.AddRange(new object[] { 1322 | "1", 1323 | "2", 1324 | "3", 1325 | "4", 1326 | "5", 1327 | "6", 1328 | "7", 1329 | "8", 1330 | "9", 1331 | "10", 1332 | "11", 1333 | "12", 1334 | "13", 1335 | "14", 1336 | "15", 1337 | "16", 1338 | "FS"}); 1339 | this.cbChA6.Location = new System.Drawing.Point(133, 104); 1340 | this.cbChA6.Name = "cbChA6"; 1341 | this.cbChA6.Size = new System.Drawing.Size(48, 21); 1342 | this.cbChA6.TabIndex = 15; 1343 | // 1344 | // label8 1345 | // 1346 | this.label8.AutoSize = true; 1347 | this.label8.Location = new System.Drawing.Point(102, 107); 1348 | this.label8.Name = "label8"; 1349 | this.label8.Size = new System.Drawing.Size(25, 13); 1350 | this.label8.TabIndex = 14; 1351 | this.label8.Text = "ch6"; 1352 | // 1353 | // cbChA5 1354 | // 1355 | this.cbChA5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1356 | this.cbChA5.FormattingEnabled = true; 1357 | this.cbChA5.Items.AddRange(new object[] { 1358 | "1", 1359 | "2", 1360 | "3", 1361 | "4", 1362 | "5", 1363 | "6", 1364 | "7", 1365 | "8", 1366 | "9", 1367 | "10", 1368 | "11", 1369 | "12", 1370 | "13", 1371 | "14", 1372 | "15", 1373 | "16", 1374 | "FS"}); 1375 | this.cbChA5.Location = new System.Drawing.Point(133, 77); 1376 | this.cbChA5.Name = "cbChA5"; 1377 | this.cbChA5.Size = new System.Drawing.Size(48, 21); 1378 | this.cbChA5.TabIndex = 13; 1379 | // 1380 | // label7 1381 | // 1382 | this.label7.AutoSize = true; 1383 | this.label7.Location = new System.Drawing.Point(102, 80); 1384 | this.label7.Name = "label7"; 1385 | this.label7.Size = new System.Drawing.Size(25, 13); 1386 | this.label7.TabIndex = 12; 1387 | this.label7.Text = "ch5"; 1388 | // 1389 | // cbChA3 1390 | // 1391 | this.cbChA3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1392 | this.cbChA3.FormattingEnabled = true; 1393 | this.cbChA3.Items.AddRange(new object[] { 1394 | "1", 1395 | "2", 1396 | "3", 1397 | "4", 1398 | "5", 1399 | "6", 1400 | "7", 1401 | "8", 1402 | "9", 1403 | "10", 1404 | "11", 1405 | "12", 1406 | "13", 1407 | "14", 1408 | "15", 1409 | "16", 1410 | "FS"}); 1411 | this.cbChA3.Location = new System.Drawing.Point(49, 104); 1412 | this.cbChA3.Name = "cbChA3"; 1413 | this.cbChA3.Size = new System.Drawing.Size(48, 21); 1414 | this.cbChA3.TabIndex = 11; 1415 | // 1416 | // label6 1417 | // 1418 | this.label6.AutoSize = true; 1419 | this.label6.Location = new System.Drawing.Point(18, 107); 1420 | this.label6.Name = "label6"; 1421 | this.label6.Size = new System.Drawing.Size(25, 13); 1422 | this.label6.TabIndex = 10; 1423 | this.label6.Text = "ch3"; 1424 | // 1425 | // cbChA2 1426 | // 1427 | this.cbChA2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1428 | this.cbChA2.FormattingEnabled = true; 1429 | this.cbChA2.Items.AddRange(new object[] { 1430 | "1", 1431 | "2", 1432 | "3", 1433 | "4", 1434 | "5", 1435 | "6", 1436 | "7", 1437 | "8", 1438 | "9", 1439 | "10", 1440 | "11", 1441 | "12", 1442 | "13", 1443 | "14", 1444 | "15", 1445 | "16", 1446 | "FS"}); 1447 | this.cbChA2.Location = new System.Drawing.Point(49, 77); 1448 | this.cbChA2.Name = "cbChA2"; 1449 | this.cbChA2.Size = new System.Drawing.Size(48, 21); 1450 | this.cbChA2.TabIndex = 9; 1451 | // 1452 | // label5 1453 | // 1454 | this.label5.AutoSize = true; 1455 | this.label5.Location = new System.Drawing.Point(18, 80); 1456 | this.label5.Name = "label5"; 1457 | this.label5.Size = new System.Drawing.Size(25, 13); 1458 | this.label5.TabIndex = 8; 1459 | this.label5.Text = "ch2"; 1460 | // 1461 | // cbChA1 1462 | // 1463 | this.cbChA1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1464 | this.cbChA1.FormattingEnabled = true; 1465 | this.cbChA1.Items.AddRange(new object[] { 1466 | "1", 1467 | "2", 1468 | "3", 1469 | "4", 1470 | "5", 1471 | "6", 1472 | "7", 1473 | "8", 1474 | "9", 1475 | "10", 1476 | "11", 1477 | "12", 1478 | "13", 1479 | "14", 1480 | "15", 1481 | "16", 1482 | "FS"}); 1483 | this.cbChA1.Location = new System.Drawing.Point(49, 50); 1484 | this.cbChA1.Name = "cbChA1"; 1485 | this.cbChA1.Size = new System.Drawing.Size(48, 21); 1486 | this.cbChA1.TabIndex = 7; 1487 | // 1488 | // label4 1489 | // 1490 | this.label4.AutoSize = true; 1491 | this.label4.Location = new System.Drawing.Point(18, 53); 1492 | this.label4.Name = "label4"; 1493 | this.label4.Size = new System.Drawing.Size(25, 13); 1494 | this.label4.TabIndex = 6; 1495 | this.label4.Text = "ch1"; 1496 | // 1497 | // cbChannelsA 1498 | // 1499 | this.cbChannelsA.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1500 | this.cbChannelsA.FormattingEnabled = true; 1501 | this.cbChannelsA.Location = new System.Drawing.Point(299, 17); 1502 | this.cbChannelsA.Name = "cbChannelsA"; 1503 | this.cbChannelsA.Size = new System.Drawing.Size(69, 21); 1504 | this.cbChannelsA.TabIndex = 5; 1505 | // 1506 | // label3 1507 | // 1508 | this.label3.AutoSize = true; 1509 | this.label3.Location = new System.Drawing.Point(242, 20); 1510 | this.label3.Name = "label3"; 1511 | this.label3.Size = new System.Drawing.Size(51, 13); 1512 | this.label3.TabIndex = 4; 1513 | this.label3.Text = "Channels"; 1514 | // 1515 | // label2 1516 | // 1517 | this.label2.AutoSize = true; 1518 | this.label2.Location = new System.Drawing.Point(206, 20); 1519 | this.label2.Name = "label2"; 1520 | this.label2.Size = new System.Drawing.Size(20, 13); 1521 | this.label2.TabIndex = 3; 1522 | this.label2.Text = "ms"; 1523 | // 1524 | // cbFrameA 1525 | // 1526 | this.cbFrameA.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 1527 | this.cbFrameA.FormattingEnabled = true; 1528 | this.cbFrameA.Items.AddRange(new object[] { 1529 | "16", 1530 | "20", 1531 | "24", 1532 | "28", 1533 | "32", 1534 | "36", 1535 | "40"}); 1536 | this.cbFrameA.Location = new System.Drawing.Point(148, 17); 1537 | this.cbFrameA.Name = "cbFrameA"; 1538 | this.cbFrameA.Size = new System.Drawing.Size(56, 21); 1539 | this.cbFrameA.TabIndex = 2; 1540 | this.cbFrameA.SelectedIndexChanged += new System.EventHandler(this.cbFrameA_SelectedIndexChanged); 1541 | // 1542 | // label1 1543 | // 1544 | this.label1.AutoSize = true; 1545 | this.label1.Location = new System.Drawing.Point(106, 20); 1546 | this.label1.Name = "label1"; 1547 | this.label1.Size = new System.Drawing.Size(36, 13); 1548 | this.label1.TabIndex = 1; 1549 | this.label1.Text = "Frame"; 1550 | // 1551 | // chkPPMA 1552 | // 1553 | this.chkPPMA.AutoSize = true; 1554 | this.chkPPMA.Location = new System.Drawing.Point(51, 19); 1555 | this.chkPPMA.Name = "chkPPMA"; 1556 | this.chkPPMA.Size = new System.Drawing.Size(49, 17); 1557 | this.chkPPMA.TabIndex = 0; 1558 | this.chkPPMA.Text = "PPM"; 1559 | this.chkPPMA.UseVisualStyleBackColor = true; 1560 | this.chkPPMA.CheckedChanged += new System.EventHandler(this.chkPPMA_CheckedChanged); 1561 | // 1562 | // frmMain 1563 | // 1564 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 1565 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 1566 | this.ClientSize = new System.Drawing.Size(731, 272); 1567 | this.Controls.Add(this.panel2); 1568 | this.Controls.Add(this.panel1); 1569 | this.Name = "frmMain"; 1570 | this.Text = "s.BUS Decoder Configurator"; 1571 | this.Load += new System.EventHandler(this.frmMain_Load); 1572 | this.panel1.ResumeLayout(false); 1573 | this.panel2.ResumeLayout(false); 1574 | this.groupBox2.ResumeLayout(false); 1575 | this.groupBox2.PerformLayout(); 1576 | this.groupBox1.ResumeLayout(false); 1577 | this.groupBox1.PerformLayout(); 1578 | this.ResumeLayout(false); 1579 | 1580 | } 1581 | 1582 | #endregion 1583 | 1584 | private System.Windows.Forms.Panel panel1; 1585 | private System.Windows.Forms.ComboBox cbPorts; 1586 | private System.IO.Ports.SerialPort COMPort; 1587 | private System.Windows.Forms.Button btnWrite; 1588 | private System.Windows.Forms.Button btnRead; 1589 | private System.Windows.Forms.Panel panel2; 1590 | private System.Windows.Forms.Splitter splitter1; 1591 | private System.Windows.Forms.GroupBox groupBox1; 1592 | private System.Windows.Forms.ComboBox cbChA16; 1593 | private System.Windows.Forms.Label label19; 1594 | private System.Windows.Forms.ComboBox cbChA13; 1595 | private System.Windows.Forms.Label label16; 1596 | private System.Windows.Forms.ComboBox cbChA14; 1597 | private System.Windows.Forms.Label label17; 1598 | private System.Windows.Forms.ComboBox cbChA15; 1599 | private System.Windows.Forms.Label label18; 1600 | private System.Windows.Forms.ComboBox cbChA10; 1601 | private System.Windows.Forms.Label label13; 1602 | private System.Windows.Forms.ComboBox cbChA11; 1603 | private System.Windows.Forms.Label label14; 1604 | private System.Windows.Forms.ComboBox cbChA12; 1605 | private System.Windows.Forms.Label label15; 1606 | private System.Windows.Forms.ComboBox cbChA7; 1607 | private System.Windows.Forms.Label label12; 1608 | private System.Windows.Forms.ComboBox cbChA8; 1609 | private System.Windows.Forms.Label label11; 1610 | private System.Windows.Forms.ComboBox cbChA9; 1611 | private System.Windows.Forms.Label label10; 1612 | private System.Windows.Forms.ComboBox cbChA4; 1613 | private System.Windows.Forms.Label label9; 1614 | private System.Windows.Forms.ComboBox cbChA6; 1615 | private System.Windows.Forms.Label label8; 1616 | private System.Windows.Forms.ComboBox cbChA5; 1617 | private System.Windows.Forms.Label label7; 1618 | private System.Windows.Forms.ComboBox cbChA3; 1619 | private System.Windows.Forms.Label label6; 1620 | private System.Windows.Forms.ComboBox cbChA2; 1621 | private System.Windows.Forms.Label label5; 1622 | private System.Windows.Forms.ComboBox cbChA1; 1623 | private System.Windows.Forms.Label label4; 1624 | private System.Windows.Forms.ComboBox cbChannelsA; 1625 | private System.Windows.Forms.Label label3; 1626 | private System.Windows.Forms.Label label2; 1627 | private System.Windows.Forms.ComboBox cbFrameA; 1628 | private System.Windows.Forms.Label label1; 1629 | private System.Windows.Forms.CheckBox chkPPMA; 1630 | private System.Windows.Forms.GroupBox groupBox2; 1631 | private System.Windows.Forms.ComboBox cbChB16; 1632 | private System.Windows.Forms.Label label20; 1633 | private System.Windows.Forms.ComboBox cbChB13; 1634 | private System.Windows.Forms.Label label21; 1635 | private System.Windows.Forms.ComboBox cbChB14; 1636 | private System.Windows.Forms.Label label22; 1637 | private System.Windows.Forms.ComboBox cbChB15; 1638 | private System.Windows.Forms.Label label23; 1639 | private System.Windows.Forms.ComboBox cbChB10; 1640 | private System.Windows.Forms.Label label24; 1641 | private System.Windows.Forms.ComboBox cbChB11; 1642 | private System.Windows.Forms.Label label25; 1643 | private System.Windows.Forms.ComboBox cbChB12; 1644 | private System.Windows.Forms.Label label26; 1645 | private System.Windows.Forms.ComboBox cbChB7; 1646 | private System.Windows.Forms.Label label27; 1647 | private System.Windows.Forms.ComboBox cbChB8; 1648 | private System.Windows.Forms.Label label28; 1649 | private System.Windows.Forms.ComboBox cbChB9; 1650 | private System.Windows.Forms.Label label29; 1651 | private System.Windows.Forms.ComboBox cbChB4; 1652 | private System.Windows.Forms.Label label30; 1653 | private System.Windows.Forms.ComboBox cbChB6; 1654 | private System.Windows.Forms.Label label31; 1655 | private System.Windows.Forms.ComboBox cbChB5; 1656 | private System.Windows.Forms.Label label32; 1657 | private System.Windows.Forms.ComboBox cbChB3; 1658 | private System.Windows.Forms.Label label33; 1659 | private System.Windows.Forms.ComboBox cbChB2; 1660 | private System.Windows.Forms.Label label34; 1661 | private System.Windows.Forms.ComboBox cbChB1; 1662 | private System.Windows.Forms.Label label35; 1663 | private System.Windows.Forms.ComboBox cbChannelsB; 1664 | private System.Windows.Forms.Label label36; 1665 | private System.Windows.Forms.Label label37; 1666 | private System.Windows.Forms.ComboBox cbFrameB; 1667 | private System.Windows.Forms.Label label38; 1668 | private System.Windows.Forms.CheckBox chkPPMB; 1669 | } 1670 | } 1671 | 1672 | -------------------------------------------------------------------------------- /SBUSDecoderCFG/SBUSDecoderCFG/frmMain.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Windows.Forms; 9 | using System.IO.Ports; 10 | 11 | namespace SBUSDecoderCFG 12 | { 13 | public partial class frmMain : Form 14 | { 15 | Dictionary cbBankA = new Dictionary(); 16 | Dictionary cbBankB = new Dictionary(); 17 | 18 | private void cbBanksInit() 19 | { 20 | cbBankA.Clear(); 21 | cbBankA.Add(1, cbChA1); 22 | cbBankA.Add(2, cbChA2); 23 | cbBankA.Add(3, cbChA3); 24 | cbBankA.Add(4, cbChA4); 25 | cbBankA.Add(5, cbChA5); 26 | cbBankA.Add(6, cbChA6); 27 | cbBankA.Add(7, cbChA7); 28 | cbBankA.Add(8, cbChA8); 29 | cbBankA.Add(9, cbChA9); 30 | cbBankA.Add(10, cbChA10); 31 | cbBankA.Add(11, cbChA11); 32 | cbBankA.Add(12, cbChA12); 33 | cbBankA.Add(13, cbChA13); 34 | cbBankA.Add(14, cbChA14); 35 | cbBankA.Add(15, cbChA15); 36 | cbBankA.Add(16, cbChA16); 37 | 38 | cbBankB.Clear(); 39 | cbBankB.Add(1, cbChB1); 40 | cbBankB.Add(2, cbChB2); 41 | cbBankB.Add(3, cbChB3); 42 | cbBankB.Add(4, cbChB4); 43 | cbBankB.Add(5, cbChB5); 44 | cbBankB.Add(6, cbChB6); 45 | cbBankB.Add(7, cbChB7); 46 | cbBankB.Add(8, cbChB8); 47 | cbBankB.Add(9, cbChB9); 48 | cbBankB.Add(10, cbChB10); 49 | cbBankB.Add(11, cbChB11); 50 | cbBankB.Add(12, cbChB12); 51 | cbBankB.Add(13, cbChB13); 52 | cbBankB.Add(14, cbChB14); 53 | cbBankB.Add(15, cbChB15); 54 | cbBankB.Add(16, cbChB16); 55 | 56 | SetBankDefaultCh(cbBankA); 57 | SetBankDefaultCh(cbBankB); 58 | } 59 | 60 | public frmMain() 61 | { 62 | InitializeComponent(); 63 | } 64 | 65 | private void frmMain_Load(object sender, EventArgs e) 66 | { 67 | cbBanksInit(); 68 | cbPorts.Items.Clear(); 69 | cbPorts.Items.AddRange(SerialPort.GetPortNames()); 70 | if (cbPorts.Items.Count > 0) cbPorts.SelectedIndex = 0; 71 | } 72 | 73 | private int GetChannelsCount(int FrameIndex) 74 | { 75 | int ms = (FrameIndex * 4) + 16; 76 | double us = ms * 1000; 77 | // minus sync 78 | us -= 2700; 79 | // 2200us per channel 80 | int chc = Convert.ToInt32(Math.Floor(us / 2200)); 81 | return chc; 82 | } 83 | 84 | void update_cbChannelsPPM(ComboBox cb, int FrameIndex, int maxCh) 85 | { 86 | int maxChannelsCount = GetChannelsCount(FrameIndex); 87 | if (maxChannelsCount > maxCh) maxChannelsCount = maxCh; 88 | cb.Items.Clear(); 89 | for (int i = 1; i <= maxChannelsCount; i++) 90 | cb.Items.Add(i); 91 | // Default = maxChannelsCount 92 | cb.SelectedIndex = maxChannelsCount - 1; 93 | } 94 | 95 | void update_cbChannelsPWM(ComboBox cb, int FrameIndex, int maxCh) 96 | { 97 | int maxChannelsCount = GetChannelsCount(FrameIndex)+1; 98 | if (maxChannelsCount > maxCh) maxChannelsCount = maxCh; 99 | cb.Items.Clear(); 100 | for (int i = 1; i <= maxChannelsCount; i++) 101 | cb.Items.Add(i); 102 | // Default = maxChannelsCount 103 | cb.SelectedIndex = maxChannelsCount - 1; 104 | } 105 | 106 | private void UpdateBankEnabled(Dictionary Bank, int chCount) 107 | { 108 | foreach (KeyValuePair itm in Bank) 109 | itm.Value.Enabled = itm.Key <= chCount; 110 | } 111 | 112 | private void SetBankDefaultCh(Dictionary Bank) 113 | { 114 | foreach (KeyValuePair itm in Bank) 115 | itm.Value.SelectedIndex = itm.Key-1; 116 | } 117 | 118 | private void chkPPMB_CheckedChanged(object sender, EventArgs e) 119 | { 120 | if (!chkPPMB.Checked) 121 | { 122 | // Frame = 20ms 123 | cbFrameB.SelectedIndex = 1; 124 | // Channels <8 125 | update_cbChannelsPWM(cbChannelsB, cbFrameB.SelectedIndex, 8); 126 | } 127 | else 128 | { 129 | // Frame = 24ms 130 | cbFrameB.SelectedIndex = 2; 131 | // Channels up to 16 132 | update_cbChannelsPPM(cbChannelsB, cbFrameB.SelectedIndex, 16); 133 | } 134 | UpdateBankEnabled(cbBankB, cbChannelsB.Items.Count); 135 | } 136 | 137 | private void chkPPMA_CheckedChanged(object sender, EventArgs e) 138 | { 139 | if (!chkPPMA.Checked) 140 | { 141 | // Frame = 20ms 142 | cbFrameA.SelectedIndex = 1; 143 | // Channels <8 144 | update_cbChannelsPWM(cbChannelsA, cbFrameA.SelectedIndex, 8); 145 | } 146 | else 147 | { 148 | // Frame = 24ms 149 | cbFrameA.SelectedIndex = 2; 150 | // Channels up to 16 151 | update_cbChannelsPPM(cbChannelsA, cbFrameA.SelectedIndex, 16); 152 | } 153 | UpdateBankEnabled(cbBankA, cbChannelsA.Items.Count); 154 | } 155 | 156 | private void btnRead_Click(object sender, EventArgs e) 157 | { 158 | byte[] buff = new byte[41]; 159 | buff[0] = 0xaa; 160 | buff[1] = 0x52; // R 161 | 162 | for (int i = 2; i < 40; i++) 163 | buff[i] = 0; 164 | 165 | buff[40] = 0x5d; 166 | 167 | COMPort.Open(); 168 | COMPort.Write(buff, 0, 41); 169 | 170 | int cnt = 0; 171 | while (cnt < 40) 172 | { 173 | if (COMPort.BytesToRead > 40) 174 | cnt = COMPort.Read(buff, 0, 41); 175 | } 176 | COMPort.Close(); 177 | 178 | chkPPMA.Checked = (buff[2] == 1); 179 | if (buff[3] - 4 < 7) cbFrameA.SelectedIndex = buff[3] - 4; 180 | if (buff[4] - 1 < 16) cbChannelsA.SelectedIndex = buff[4] - 1; 181 | 182 | if (buff[5] < 17) cbChA1.SelectedIndex = buff[5]; 183 | if (buff[6] < 17) cbChA2.SelectedIndex = buff[6]; 184 | if (buff[7] < 17) cbChA3.SelectedIndex = buff[7]; 185 | if (buff[8] < 17) cbChA4.SelectedIndex = buff[8]; 186 | if (buff[9] < 17) cbChA5.SelectedIndex = buff[9]; 187 | if (buff[10] < 17) cbChA6.SelectedIndex = buff[10]; 188 | if (buff[11] < 17) cbChA7.SelectedIndex = buff[11]; 189 | if (buff[12] < 17) cbChA8.SelectedIndex = buff[12]; 190 | if (buff[13] < 17) cbChA9.SelectedIndex = buff[13]; 191 | if (buff[14] < 17) cbChA10.SelectedIndex = buff[14]; 192 | if (buff[15] < 17) cbChA11.SelectedIndex = buff[15]; 193 | if (buff[16] < 17) cbChA12.SelectedIndex = buff[16]; 194 | if (buff[17] < 17) cbChA13.SelectedIndex = buff[17]; 195 | if (buff[18] < 17) cbChA14.SelectedIndex = buff[18]; 196 | if (buff[19] < 17) cbChA15.SelectedIndex = buff[19]; 197 | if (buff[20] < 17) cbChA16.SelectedIndex = buff[20]; 198 | 199 | chkPPMB.Checked = (buff[21] == 1); 200 | if (buff[22] - 4 < 7) cbFrameB.SelectedIndex = buff[22] - 4; 201 | if (buff[23] - 1 < 16) cbChannelsB.SelectedIndex = buff[23] - 1; 202 | 203 | if (buff[24] < 17) cbChB1.SelectedIndex = buff[24]; 204 | if (buff[25] < 17) cbChB2.SelectedIndex = buff[25]; 205 | if (buff[26] < 17) cbChB3.SelectedIndex = buff[26]; 206 | if (buff[27] < 17) cbChB4.SelectedIndex = buff[27]; 207 | if (buff[28] < 17) cbChB5.SelectedIndex = buff[28]; 208 | if (buff[29] < 17) cbChB6.SelectedIndex = buff[29]; 209 | if (buff[30] < 17) cbChB7.SelectedIndex = buff[30]; 210 | if (buff[31] < 17) cbChB8.SelectedIndex = buff[31]; 211 | if (buff[32] < 17) cbChB9.SelectedIndex = buff[32]; 212 | if (buff[33] < 17) cbChB10.SelectedIndex = buff[33]; 213 | if (buff[34] < 17) cbChB11.SelectedIndex = buff[34]; 214 | if (buff[35] < 17) cbChB12.SelectedIndex = buff[35]; 215 | if (buff[36] < 17) cbChB13.SelectedIndex = buff[36]; 216 | if (buff[37] < 17) cbChB14.SelectedIndex = buff[37]; 217 | if (buff[38] < 17) cbChB15.SelectedIndex = buff[38]; 218 | if (buff[39] < 17) cbChB16.SelectedIndex = buff[39]; 219 | } 220 | 221 | private void btnWrite_Click(object sender, EventArgs e) 222 | { 223 | byte[] buff = new byte[41]; 224 | buff[0] = 0xaa; 225 | buff[1] = 0x57; // W 226 | buff[2] = Convert.ToByte(chkPPMA.Checked); 227 | buff[3] = (byte)(cbFrameA.SelectedIndex + 4); 228 | buff[4] = (byte)(cbChannelsA.SelectedIndex + 1); 229 | 230 | buff[5] = (byte)(cbChA1.SelectedIndex); 231 | buff[6] = (byte)(cbChA2.SelectedIndex); 232 | buff[7] = (byte)(cbChA3.SelectedIndex); 233 | buff[8] = (byte)(cbChA4.SelectedIndex); 234 | buff[9] = (byte)(cbChA5.SelectedIndex); 235 | buff[10] = (byte)(cbChA6.SelectedIndex); 236 | buff[11] = (byte)(cbChA7.SelectedIndex); 237 | buff[12] = (byte)(cbChA8.SelectedIndex); 238 | buff[13] = (byte)(cbChA9.SelectedIndex); 239 | buff[14] = (byte)(cbChA10.SelectedIndex); 240 | buff[15] = (byte)(cbChA11.SelectedIndex); 241 | buff[16] = (byte)(cbChA12.SelectedIndex); 242 | buff[17] = (byte)(cbChA13.SelectedIndex); 243 | buff[18] = (byte)(cbChA14.SelectedIndex); 244 | buff[19] = (byte)(cbChA15.SelectedIndex); 245 | buff[20] = (byte)(cbChA16.SelectedIndex); 246 | 247 | buff[21] = Convert.ToByte(chkPPMB.Checked); 248 | buff[22] = (byte)(cbFrameB.SelectedIndex + 4); 249 | buff[23] = (byte)(cbChannelsB.SelectedIndex + 1); 250 | 251 | buff[24] = (byte)(cbChB1.SelectedIndex); 252 | buff[25] = (byte)(cbChB2.SelectedIndex); 253 | buff[26] = (byte)(cbChB3.SelectedIndex); 254 | buff[27] = (byte)(cbChB4.SelectedIndex); 255 | buff[28] = (byte)(cbChB5.SelectedIndex); 256 | buff[29] = (byte)(cbChB6.SelectedIndex); 257 | buff[30] = (byte)(cbChB7.SelectedIndex); 258 | buff[31] = (byte)(cbChB8.SelectedIndex); 259 | buff[32] = (byte)(cbChB9.SelectedIndex); 260 | buff[33] = (byte)(cbChB10.SelectedIndex); 261 | buff[34] = (byte)(cbChB11.SelectedIndex); 262 | buff[35] = (byte)(cbChB12.SelectedIndex); 263 | buff[36] = (byte)(cbChB13.SelectedIndex); 264 | buff[37] = (byte)(cbChB14.SelectedIndex); 265 | buff[38] = (byte)(cbChB15.SelectedIndex); 266 | buff[39] = (byte)(cbChB16.SelectedIndex); 267 | 268 | buff[40] = 0x5d; 269 | 270 | COMPort.Open(); 271 | COMPort.Write(buff, 0, 41); 272 | COMPort.Close(); 273 | } 274 | 275 | private void cbFrameA_SelectedIndexChanged(object sender, EventArgs e) 276 | { 277 | if (!chkPPMA.Checked) 278 | { 279 | // Channels <8 280 | update_cbChannelsPWM(cbChannelsA, cbFrameA.SelectedIndex, 8); 281 | } 282 | else 283 | { 284 | // Channels up to 16 285 | update_cbChannelsPPM(cbChannelsA, cbFrameA.SelectedIndex, 16); 286 | } 287 | UpdateBankEnabled(cbBankA, cbChannelsA.Items.Count); 288 | } 289 | 290 | private void cbFrameB_SelectedIndexChanged(object sender, EventArgs e) 291 | { 292 | if (!chkPPMB.Checked) 293 | { 294 | // Channels <8 295 | update_cbChannelsPWM(cbChannelsB, cbFrameB.SelectedIndex, 8); 296 | } 297 | else 298 | { 299 | // Channels up to 16 300 | update_cbChannelsPPM(cbChannelsB, cbFrameB.SelectedIndex, 16); 301 | } 302 | UpdateBankEnabled(cbBankB, cbChannelsB.Items.Count); 303 | } 304 | 305 | private void cbPorts_SelectedIndexChanged(object sender, EventArgs e) 306 | { 307 | COMPort.PortName = cbPorts.SelectedItem.ToString(); 308 | } 309 | 310 | } 311 | } 312 | -------------------------------------------------------------------------------- /SBUSDecoderCFG/SBUSDecoderCFG/frmMain.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | -------------------------------------------------------------------------------- /test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mactep8/SBus_Decoder/0373550cdca4effcf0819cf5c13e7eb6d8bc29d5/test.jpg -------------------------------------------------------------------------------- /test_cfg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mactep8/SBus_Decoder/0373550cdca4effcf0819cf5c13e7eb6d8bc29d5/test_cfg.jpg --------------------------------------------------------------------------------