久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4101|回復: 0
打印 上一主題 下一主題
收起左側

GPRS RTU采集數據傳輸

[復制鏈接]
跳轉到指定樓層
樓主
ID:258034 發表于 2017-12-6 09:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
I2C采集壓力數據,24c02存儲參數,RTC實時時間,將數據信息通過GPRS方式上傳到數據平臺,232通訊修改采集時間和上傳時間等參數信息

#include <msp430x16x.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define CPU_F ((double)8000000)  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long

/*當BRCLK=CPU_F時用下面的公式可以計算,否則要根據設置加入分頻系數*/
#define baud           9600                                //設置波特率的大小
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率計算公式
#define baud_h         (uchar)(baud_setting>>8)            //提取高位
#define baud_l         (uchar)(baud_setting)               //低位

int err = 0;
char *p = NULL;
#define MAX_ERROR_COUNT 50
uchar receive_enable;
union
{
    char    mcInt8[4];
    uchar   mucByte[4];
    int     miWord[2];
    uint    muWord[2];
    long    mlDWord;
    ulong   mulDWord;
}guinDWord1;                      //共用體臨時變量
union
{
    uchar  a[4];
    float b;
}temp1;

union
{
    uchar   a[4];
    int     b[2];
}temp2;

//uart1
typedef struct _CONFIG_FLAG
{
    unsigned char config_analysis;     //配置數據 數據分析中
    unsigned char config_receiver;     //接收中
    unsigned char config_stop;         //接收完畢
}CONFIG_FLAG;
CONFIG_FLAG g_config_flag;

#define BUFLEN 60
typedef struct _UART_BUF
{
    char buf[BUFLEN+1];                // 多申請一個字符保證最后一個字符永遠是'0'
    int index ;
}UART_BUF;
UART_BUF buf_uart1;

//I2C 壓力傳感器
#define ReadPM100   0x7F
#define SDA_PM100_BIT BIT2
#define SCL_PM100_BIT BIT0
#define SDA_PM100_BIT_DATA (P2IN&BIT2)
#define SDA_PM100_OUT (P2DIR |= BIT2)
#define SDA_PM100_IN  (P2DIR &= ~BIT2)
#define SDA_PM100_H   (P2OUT |= BIT2)
#define SDA_PM100_L   (P2OUT &= ~BIT2)
#define SCL_PM100_OUT (P2DIR |= BIT0)
#define SCL_PM100_IN  (P2DIR &= ~BIT0)
#define SCL_PM100_H   (P2OUT |= BIT0)
#define SCL_PM100_L   (P2OUT &= ~BIT0)

//I2C 24C32/DS1307
#define Write24c02  0xA0 //24C02器件地址+寫操作使能
#define Read24c02   0xA1 //24C02器件地址+讀操作使能
#define Write1307   0xD0
#define Read1307    0xD1
#define SDA_BIT BIT5
#define SCL_BIT BIT7
#define IIC_PORT_DIR P6DIR
#define IIC_PORT_DATA P6OUT
#define SDA_BIT_DATA (P6IN&BIT5)>>5
#define SDA_OUT (P6DIR |= BIT5)
#define SDA_IN  (P6DIR &= ~BIT5)
#define SDA_H   (P6OUT |= BIT5)
#define SDA_L   (P6OUT &= ~BIT5)
#define SCL_OUT (P6DIR |= BIT7)
#define SCL_IN  (P6DIR &= ~BIT7)
#define SCL_H   (P6OUT |= BIT7)
#define SCL_L   (P6OUT &= ~BIT7)
unsigned char DS1307_second;
unsigned char DS1307_minute;
unsigned char DS1307_hour;
unsigned char DS1307_week;
unsigned char DS1307_date;
unsigned char DS1307_month;
unsigned char DS1307_year;
//eeprom
#define USE_EEPROM_DATA_LENGTH 100         //長度
unsigned char I2c_Buf[USE_EEPROM_DATA_LENGTH];
#define MAX_COMMA USE_EEPROM_DATA_LENGTH-2
#define EEPROM_FILED_LENGTH 20                            //段長度
typedef struct _EEPROM_CONFIG_DATA
{
    char serialnum[EEPROM_FILED_LENGTH+1];          //系列號
    char protocoltype[EEPROM_FILED_LENGTH+1];       //協議類型
    char ipaddr[EEPROM_FILED_LENGTH+1];             //IP地址
    char portnum[EEPROM_FILED_LENGTH+1];            //端口
    char telnum[EEPROM_FILED_LENGTH+1];             //電話號碼
    int bufsize;                                        //緩存大小
    int alarm_h;                                    //上限報警值
    int alarm_l;                                    //下限報警值
    int gprs_send_interval;                         //上傳時間
    int pm100_send_interval;                        //采集時間
    int rtu_id;                                    
}EEPROM_CONFIG_DATA;
EEPROM_CONFIG_DATA g_config_data;
//默認設置數據                                  
#define SERNUM "0000001"
#define PROTOTOCOL "TCP"
#define IPADDR "59.44.149.60"
#define PORTNUM "1001"
#define TELNUM "15922041115"
#define CACHESIZE 512
#define ALARM_H 100
#define ALARM_L 80
#define GPRS_SEND_INT 2
#define PM100_SEND_INT     1


//WDT
uint WDT_second,WDT_minute_gprs,WDT_minute_pm100;

//gprs
unsigned char gprs_send_enable;
unsigned char pm100_send_enable;
typedef enum
{
    INIT0,
    CGMM,
    ECHO0,
    SIMCARD,
    RST,
    CREG,
    INIT_FINISH_OK,

    GPRS_JH_S,
    GPRS_DK_S ,
    GPRS_QD_S ,
    GPRS_OPEN_FINISH,       /// GPRS 打開成功了

    TCPIP_IO_MODE,
    TCPIP_BJ_ADDR,
    TCPIP_CONNECT,
    TCP_IP_OK,
    TCP_IP_NO,
    TCP_IP_CONNECTING,

    GPRS_DEF_PDP_S,         /// 定義PDP場景
    GPRS_ACT_PDP_S,         /// 激活場景
    GPRS_ACT_PDP_S_RET,     /// 激活反饋
    GPRS_CMNET_APN_S,       /// 接入模式

    TRANSPARENT_MODE_START,
    TRANSPARENT_MODE_DEF,
    TRANSPARENT_MODE_ACT,
    TRANSPARENT_MODE_IOMODE,
    TRANSPARENT_MODE_TYPE,
    TRANSPARENT_MODE_CONFIG,
    TRANSPARENT_MODE_CONNECT,
    TRANSPARENT_MODE_CONNECT_RET,
    TM_OK,
    TM_NO,

    TCPIP_CLOSE_START,
    TCPIP_CLOSE_DEF,
    TCPIP_CLOSE_ETCPIP,
    TCP_IP_CLOSE_OK,
    TCP_IP_CLOSE_NO,


    GSM_SEND_TEXT_S,
    GSM_MSG_MODE_S,
    GSM_CHAR_MODE_S,
    GSM_TEXT_MODE_FINISH,

    SMS_READ_MESSAGE_START_S,
    SMS_READ_CONTENT_S,
    READ_SMS_FINISH,

    INIT_GPS_FINISH_OK,

    SIM900_LOC_START,
    SIM900_GPRS_S,
    SIM900_APN_S,
    SIM900_PBR1_S,
    SIM900_PBR2_S,
    SIM900_LOC_S,
    SIM900_LOC_G_S,
    SIM900_LOC_FINISH
}SIM_STATUS ;
SIM_STATUS current_status = INIT0 ;
unsigned char is_gprs_mode_ok = 1;                  //gprs start succeed
unsigned char is_gprs_mode_start_succeed = 0;       //gprs connect ok
UART_BUF buf_uart0;                                 //gprs
char g_gprs_conn_ok=0;                                    //GPRS處于連接狀態
unsigned char GPRS_BUF_SIZE;
//char ibusy  = 0;                                    //在發送數據的時候,心跳包停止

//REG
#define ATE0_CMD "ATE0\x00D\x00A"                       // 禁止回顯                                                                                                                                               
#define CREG_CMD "AT+CREG?\x00D\x00A"               // 查詢網絡注冊情況
#define CGMM_CMD "AT+CGMM\x00D\x00A"
#define SIMCARD_CMD "AT+CPIN?\x00D\x00A"            //檢查登入移動設備(ME)的密碼,返回READY表示正常
//LD GPRS
#define GPRS_QD "AT+CSTT\x00D\x00A"                 // GPRS啟動
#define GPRS_JH "AT+CIICR\x00D\x00A"                // 移動場景開啟,激活
//LGL GPRS
#define GPRS_DEF_PDP "AT+CGDCONT=1,\"IP\",\"CMNET\"\x00D\x00A"  // 接入點
#define GPRS_ACT_PDP "AT+CGATT=1\x00D\x00A"                     // GPRS激活PDP

#define GPRS_CMNET_APN "AT+CIPCSGP=1,\"CMNET\"\x00D\x00A"       // 設置GPRS模式
//CONNECT... GPRS
#define GPRS_BJ_ADDR "AT+CIFSR\x00D\x00A"           // 獲取本地IP
#define GPRS_TCP1 "AT+CIPSTART="                    // 建立一個IP連接
#define GPRS_TCP2 PROTOTOCOL
#define GPRS_TCP3 IPADDR
#define GPRS_TCP4 PORTNUM

#define PM "^SIM800A^"
//SEND  GPRS
#define GPRS_SEND_DATA "AT+CIPSEND\x00D"
//SEND SMS
#define GSM_MSG_MODE "AT+CMGF=1\x00D\x00A"
//#define GSM_CENTER_NUM "AT+CSCA=\"+8613800512500\"\x00D\x00A"
#define GSM_CHAR_MODE "AT+CSCS=\"GSM\"\x00D\x00A"
#define GSM_SEND_TEXT "AT+CMGS=\"+8613512963352\"\x00D\x00A"
//READ SMS
#define SMSCAT "CMTI: \"SM\","
#define SMSCATRHOS "+CMT:"

//電源檢測
#define POWER_DETECT_CMD "AT+CBC\x00D\x00A"
#define SIGNAL_CMD "AT+CSQ\x00D\x00A"     //;+CREG?


//modbus tcp
unsigned int ProID;
unsigned char yali_float_buf[4];
unsigned char signal_float_buf[4];
unsigned char battery_float_buf[4];
unsigned char timetag_float_buf[8];
#define USE_MODBUS_DATA_LENGTH 100
char modbus_buf[USE_MODBUS_DATA_LENGTH];


//*************************************************************************
//              函數聲明
//*************************************************************************
//void send_string_uart0(char *s)
void Port_Init();
void I2c_Init(void);
void uart0_init();
void read_data_pm100(void);
void read_data_timetag(void);
void start_gprs_mode(void);
void clear_buf_uart0(void);
void init_gprs(void);
void open_gprs_simple(void);
void creat_tcp();
void read_data_signal(void);
void read_data_power(void);
void Send_Modbus_16(void);
void Send_Modbus_3(void);
void send_string_uart0(char *s);

code.rar

360.03 KB, 下載次數: 20, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 999国产视频| 一级毛片视频在线 | 免费国产视频在线观看 | 亚洲精品久久久久avwww潮水 | 国产精品色一区二区三区 | 欧美高清视频 | 欧美色综合一区二区三区 | 亚洲一区二区三区在线播放 | 国产视频一区二区三区四区五区 | 中文字幕一区二区三区不卡 | 国产成人短视频在线观看 | 日韩一区二区三区精品 | www日本在线播放 | 人人干人人爽 | 一级毛片成人免费看a | 日韩国产欧美一区 | 亚洲欧美一区二区三区1000 | 理论片午午伦夜理片影院 | 激情a| 亚洲精品成人在线 | 久久久久国产精品一区二区 | 精品国产精品三级精品av网址 | 午夜欧美一区二区三区在线播放 | 精品国产91乱码一区二区三区 | 久久亚洲一区二区三区四区 | 日本精品视频一区二区 | 久久91 | 操到爽 | 国产精品揄拍一区二区 | 亚洲另类视频 | 国产成人免费视频网站视频社区 | 亚洲精品久久视频 | 欧美日韩久久久 | 亚洲欧美日韩在线 | 中文字幕视频一区二区 | 精品国产鲁一鲁一区二区张丽 | 免费在线观看成年人视频 | 亚洲精品在线观看网站 | 在线午夜电影 | 国产一区不卡 | 日本理论片好看理论片 |