設置 | 登錄 | 註冊

目前共有16篇帖子。

【程序】Powerlog 开机时间及室温自动记录程序 V2.4

11樓 巨大八爪鱼 2016-2-10 16:05
【UART.c】
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h> // UNIX Standard Function Definitions
#include <fcntl.h> // File Control Definitions
#include <errno.h> // File Control Definitions
#include <termios.h> // POSIX Terminal Control Definitions
#include "UART.h"

struct termios tty;
struct termios tty_old;
int UART_id = 0;

int UART_Open(void)
{
    memset(&tty, 0, sizeof(tty));
    UART_id = open(UART_PORT, O_RDWR | O_NOCTTY | O_NDELAY);
    if (UART_id < 0)
    {
        printf("Warning: Cannot open the serial port!\n");
        return 0;
    }
  
    /* Error Handling */
    if (tcgetattr(UART_id, &tty) != 0)
    {
        printf("Error: %d from tcgetattr: %s \n", errno,strerror(errno));
        return 0;
    }
  
    /* Save old tty parameters */
    tty_old = tty;
  
    /* Set Baud Rate */
    cfsetospeed(&tty, (speed_t)B9600);
    cfsetispeed(&tty, (speed_t)B9600);
  
    /* Setting other Port Stuff */
    tty.c_cflag &= ~PARENB; // Make 8n1
    tty.c_cflag &= ~CSTOPB;
    tty.c_cflag &= ~CSIZE;
    tty.c_cflag |= CS8;
  
    tty.c_cflag &= ~CRTSCTS; // no flow control
    tty.c_cc[VMIN] = 1; // read doesn't block
    tty.c_cc[VTIME] = 5; // 0.5 second read timeout
    tty.c_cflag |= CREAD | CLOCAL; // turn on READ & ignore ctrl lines
  
    /* Make raw */
    cfmakeraw(&tty);
  
    /* Flush Port, then applies attributes */
    tcflush(UART_id, TCIFLUSH);
    if (tcsetattr(UART_id, TCSANOW, &tty) != 0)
    {
        printf("Error: %d from tcgetattr\n", errno);
        return 0;
    }
  
    return UART_id;
}

void UART_Send(unsigned char Byte)
{
    write(UART_id, &Byte, 1);
    // It was definitely not necessary to write byte per byte, also int n_written = write( UART_id, cmd, sizeof(cmd) -1) worked fine.
}

int UART_Receive(char* buf)
{
    int len = read(UART_id, buf, 512);
    buf[len] = '\0';
    return len;
}

void UART_Close()
{
    close(UART_id);
}

12樓 巨大八爪鱼 2016-2-10 16:05
【UART.h】
#define UART_PORT "/dev/ttyUSB0"

int UART_Open(void);
void UART_Send(unsigned char Byte);
int UART_Receive(char* buf);
void UART_Close();
13樓 巨大八爪鱼 2016-2-10 16:05
Powerlog V2.4
程序主要功能
开机时自动启动powerlog2程序记录开机时间及室温到MySQL数据库的PowerLog表中,表中的IP地址字段由IP.txt决定。powerlog2程序退出后,自动启动templog守护进程,每隔2400秒左右记录一次室温到TemperatureLog表中。首次启动templog后100秒自动记录一次室温。若想要退出templog守护程序,可将Flags表中的TEMPLOG_EXIT的FlagValue设置为EXIT,大约100秒之后,程序自动退出。
logview程序用于查看最近的开机记录,并自动输出所有的开机记录到powerlog.txt文件中。
14樓 巨大八爪鱼 2016-2-10 16:08
【数据表: Flags】
CREATE TABLE `Flags` (
 `FlagName` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
 `FlagValue` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 PRIMARY KEY (`FlagName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `Flags` (`FlagName`) VALUES ('TEMPLOG_EXIT');
15樓 巨大八爪鱼 2016-2-10 16:09
【数据表: PowerLog】
CREATE TABLE `PowerLog` (
 `LogID` int(11) NOT NULL AUTO_INCREMENT,
 `LogTime` datetime NOT NULL,
 `LogFlag` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'TEST',
 `LogTimeZone` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'UTC+8',
 `ComputerIP` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '192.168.0.4',
 `Temperature` varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'NO DATA',
 PRIMARY KEY (`LogID`)
) ENGINE=InnoDB AUTO_INCREMENT=1163 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
16樓 巨大八爪鱼 2016-2-10 16:10
【数据表: TemperatureLog】
CREATE TABLE `TemperatureLog` (
 `LogTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `TemperatureA` float NOT NULL,
 `TemperatureB` float NOT NULL,
 `TemperatureC` float NOT NULL,
 `TemperatureD` float NOT NULL,
 `TemperatureE` float NOT NULL,
 `TemperatureF` float NOT NULL,
 `TemperatureG` float NOT NULL,
 `TemperatureH` float NOT NULL,
 `TemperatureI` float NOT NULL,
 `TemperatureJ` float NOT NULL,
 PRIMARY KEY (`LogTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。