//val: 0,open; 1,close void pelcod_open_close_packet_send(u8 val) { u8 cnt; u8 cmd_buff_private[7]; cmd_buff_private[0] = 0xff; cmd_buff_private[1] = target_id; if(val)//close cmd_buff_private[2] = 0x04; else cmd_buff_private[2] = 0x02; cmd_buff_private[3] = 0; cmd_buff_private[4] = 0; cmd_buff_private[5] = 0; cmd_buff_private[6] = cmd_buff_private[1] + cmd_buff_private[2] + cmd_buff_private[3] + cmd_buff_private[4] + cmd_buff_private[5]; rs485_send_data(cmd_buff_private,7); // cnt=3; // while(cnt--) // { // if(RT_EOK == rs485_recieve_check(val)) // break; // else // rs485_send_data(cmd_buff_private,7); // } }
void rs485_recieve_test(void) { while(1) { if(RT_EOK == rs485_recieve_check(0x99)) { cam_filter_mode = Rocket_sec_data-1; if(cam_filter_mode>3) cam_filter_mode = 0; iris_mode = Rocket_thr_data&0x0f; //iris_motor_mode = (Rocket_thr_data>>4)&0x0f; osd_line3_disp(0); } } while(1) { if(rt_sem_take(uart1_sem, 200) == RT_EOK) { rs485_send_data(keyboard_data_buffer, 7); } } }
u8 rs485_get_data_from_slave(void) { u8 cnt; u8 cmd_buff_private[7]; cmd_buff_private[0] = 0xff; cmd_buff_private[1] = target_id; cmd_buff_private[2] = 0; cmd_buff_private[3] = 0x88; cmd_buff_private[4] = 0; cmd_buff_private[5] = 0; cmd_buff_private[6] = cmd_buff_private[1] + cmd_buff_private[2] + cmd_buff_private[3] + cmd_buff_private[4] + cmd_buff_private[5]; rs485_send_data(cmd_buff_private,7); cnt=3; while(cnt--) { if(RT_EOK == rs485_recieve_check(0x88)) break; //else // rs485_send_data(cmd_buff_private,7); } }
void rt_rs485_thread_entry(void* parameter) { char ch; while (1) { /* wait receive */ if (rt_sem_take(&uart1_dev_my->rx_sem, RT_WAITING_FOREVER) != RT_EOK) continue; /* read one character from device */ while (rt_device_read(uart1_dev_my->device, 0, &ch, 1) == 1) { #if 0 u8 datatmp; datatmp = ch; rs485_send_data(&datatmp, 1); #endif pelco_rx_isr(ch); } /* end of device read */ } }
static void sendNACK(void) { cmdrspbuffer[0] = 0xC0; cmdrspbuffer[1] = address; cmdrspbuffer[2] = 0x80; cmdrspbuffer[3] = 0x89; cmdrspbuffer[4] = 0xC0; rs485_trans_num = 5; rs485_send_data(); }
//cmd,0,stop; 1,tele,2wide; 3,far,4,near void pelcod_zf_packet_send(u8 cmd,u8 zfspeed) { u8 cnt; u8 cmd_buff_private[7]; cmd_buff_private[0] = 0xff; cmd_buff_private[1] = target_id; // if(cmd==1||cmd==2||cmd==3||cmd==4) // { // if(zfspeed>8) // zfspeed = 8; // pelcod_call_pre_packet_send(100+zfspeed); // } // switch(cmd) { case 1: cmd_buff_private[3] = 0x20; cmd_buff_private[2] = 0; cmd_buff_private[4] = zfspeed; break; case 2: cmd_buff_private[3] = 0x40; cmd_buff_private[2] = 0; cmd_buff_private[4] = zfspeed; break; case 3: cmd_buff_private[3] = 0x00; cmd_buff_private[2] = 0x01;// cmd_buff_private[4] = zfspeed; break; case 4: cmd_buff_private[3] = 0x80; cmd_buff_private[2] = 0; cmd_buff_private[4] = zfspeed; break; case 0: cmd_buff_private[3] = 0x00; cmd_buff_private[2] = 0; break; } //cmd_buff_private[4] = 0; cmd_buff_private[5] = 0; cmd_buff_private[6] = cmd_buff_private[1] + cmd_buff_private[2] + cmd_buff_private[3] + cmd_buff_private[4] + cmd_buff_private[5]; rs485_send_data(cmd_buff_private,7); }
void pelcod_stop_packet_send(void) { u8 cnt; u8 cmd_buff_private[7]; cmd_buff_private[0] = 0xff; cmd_buff_private[1] = target_id; cmd_buff_private[2] = 0; cmd_buff_private[3] = 0; cmd_buff_private[4] = 0; cmd_buff_private[5] = 0; cmd_buff_private[6] = cmd_buff_private[1] + cmd_buff_private[2] + cmd_buff_private[3] + cmd_buff_private[4] + cmd_buff_private[5]; rs485_send_data(cmd_buff_private,7); }
void pelcod_lrud_pre_packet_send(u8 lrudcmd,u8 lrspeed,u8 udspeed) { u8 cnt; u8 cmd_buff_private[7]; cmd_buff_private[0] = 0xff; cmd_buff_private[1] = target_id; cmd_buff_private[2] = 0; cmd_buff_private[3] = lrudcmd; cmd_buff_private[4] = lrspeed; cmd_buff_private[5] = udspeed; cmd_buff_private[6] = cmd_buff_private[1] + cmd_buff_private[2] + cmd_buff_private[3] + cmd_buff_private[4] + cmd_buff_private[5]; rs485_send_data(cmd_buff_private,7); }
void pelcod_set_pre_extend_packet_send(u8 val,u8 cmd) { u8 cnt; u8 cmd_buff_private[7]; cmd_buff_private[0] = 0xff; cmd_buff_private[1] = target_id; cmd_buff_private[2] = 0xff; cmd_buff_private[3] = cmd; cmd_buff_private[4] = val; cmd_buff_private[5] = 0; cmd_buff_private[6] = cmd_buff_private[1] + cmd_buff_private[2] + cmd_buff_private[3] + cmd_buff_private[4] + cmd_buff_private[5]; rs485_send_data(cmd_buff_private,7); }
static void sendTemper(void) { uchar rspbuff[RS485BUF_SIZE]; uchar idx = 0; rspbuff[idx++] = 0x00; rspbuff[idx++] = 0x00; rspbuff[idx++] = 0x00; rspbuff[idx++] = 0x00; rspbuff[idx++] = 0x00; rspbuff[idx++] = ADE7758Data[0].Temper; rspbuff[idx++] = ADE7758Data[1].Temper; rs485_trans_num = fillrspbuffer(rspbuff,idx,cmdrspbuffer); rs485_send_data(); }
static void sendPHASE3(void) { uchar rspbuff[RS485BUF_SIZE]; uchar idx = 0; rspbuff[idx++] = 0x00; rspbuff[idx++] = 0x00; rspbuff[idx++] = 0x00; rspbuff[idx++] = (uchar)(ADE7758Data[0].PhaseC.Energy>>24); rspbuff[idx++] = (uchar)(ADE7758Data[0].PhaseC.Energy>>16); rspbuff[idx++] = (uchar)(ADE7758Data[0].PhaseC.Energy>>8); rspbuff[idx++] = (uchar)(ADE7758Data[0].PhaseC.Energy); rspbuff[idx++] = ADE7758Data[0].PhaseC.Frequency[0]; rspbuff[idx++] = ADE7758Data[0].PhaseC.Voltage[0]; rspbuff[idx++] = ADE7758Data[0].PhaseC.Voltage[1]; rspbuff[idx++] = ADE7758Data[0].PhaseC.Voltage[2]; rspbuff[idx++] = ADE7758Data[0].PhaseC.Frequency[1]; rspbuff[idx++] = ADE7758Data[0].PhaseC.Current[0]; rspbuff[idx++] = ADE7758Data[0].PhaseC.Current[1]; rspbuff[idx++] = ADE7758Data[0].PhaseC.Current[2]; rspbuff[idx++] = ADE7758Data[0].PhaseC.Active_Power[0]; rspbuff[idx++] = ADE7758Data[0].PhaseC.Active_Power[1]; rspbuff[idx++] = ADE7758Data[0].PhaseC.Apparent_Power[0]; rspbuff[idx++] = ADE7758Data[0].PhaseC.Apparent_Power[1]; rspbuff[idx++] = (uchar)(ADE7758Data[1].PhaseC.Energy>>24); rspbuff[idx++] = (uchar)(ADE7758Data[1].PhaseC.Energy>>16); rspbuff[idx++] = (uchar)(ADE7758Data[1].PhaseC.Energy>>8); rspbuff[idx++] = (uchar)(ADE7758Data[1].PhaseC.Energy); rspbuff[idx++] = ADE7758Data[1].PhaseC.Frequency[0]; rspbuff[idx++] = ADE7758Data[1].PhaseC.Voltage[0]; rspbuff[idx++] = ADE7758Data[1].PhaseC.Voltage[1]; rspbuff[idx++] = ADE7758Data[1].PhaseC.Voltage[2]; rspbuff[idx++] = ADE7758Data[1].PhaseC.Frequency[1]; rspbuff[idx++] = ADE7758Data[1].PhaseC.Current[0]; rspbuff[idx++] = ADE7758Data[1].PhaseC.Current[1]; rspbuff[idx++] = ADE7758Data[1].PhaseC.Current[2]; rspbuff[idx++] = ADE7758Data[1].PhaseC.Active_Power[0]; rspbuff[idx++] = ADE7758Data[1].PhaseC.Active_Power[1]; rspbuff[idx++] = ADE7758Data[1].PhaseC.Apparent_Power[0]; rspbuff[idx++] = ADE7758Data[1].PhaseC.Apparent_Power[1]; rs485_trans_num = fillrspbuffer(rspbuff,idx,cmdrspbuffer); rs485_send_data(); }
static void sendDEV(void) { uchar rspbuff[RS485BUF_SIZE]; uchar idx = 0; rspbuff[idx++] = 0x00; rspbuff[idx++] = 0x00; rspbuff[idx++] = 0x00; rspbuff[idx++] = 'S'; rspbuff[idx++] = 'S'; rspbuff[idx++] = 'P'; rspbuff[idx++] = 'O'; rspbuff[idx++] = 'W'; rspbuff[idx++] = 'E'; rspbuff[idx++] = 'R'; rs485_trans_num = fillrspbuffer(rspbuff,idx,cmdrspbuffer); rs485_send_data(); }
u8 rs485_get_data_from_slave_thread(void) { static u8 cmd_buff_private[7]; u8 cam_filter_mode_bak = 0xff,iris_mode_bak=0xff,iris_val_bak=0; cmd_buff_private[0] = 0xff; cmd_buff_private[1] = target_id; cmd_buff_private[2] = 0; cmd_buff_private[3] = 0x88; cmd_buff_private[4] = 0; cmd_buff_private[5] = 0; cmd_buff_private[6] = cmd_buff_private[1] + cmd_buff_private[2] + cmd_buff_private[3] + cmd_buff_private[4] + cmd_buff_private[5]; while(1) { rt_thread_delay(800); rs485_send_data(cmd_buff_private,7); if(RT_EOK == rs485_recieve_check(0x99)) { cam_filter_mode = Rocket_sec_data-1; if(cam_filter_mode>3) cam_filter_mode = 0; iris_mode = Rocket_thr_data&0x0f; //iris_motor_mode = (Rocket_thr_data>>4)&0x0f; iris_val = Rocket_fou_data; if(iris_val>100) iris_val=100; if(iris_val_bak != iris_val || cam_filter_mode_bak!=cam_filter_mode || iris_mode_bak!= iris_mode) { iris_val_bak = iris_val; cam_filter_mode_bak = cam_filter_mode; iris_mode_bak = iris_mode; osd_line3_disp(0); osd_line2_disp(0); } } else { iris_val = 0xff; //iris_motor_mode = 0xff; } } //osd_line3_disp(0); return 0; }