发送时间码

/*******************************************************************************
* 标题: 读取本地时间发送时间码 *
* 文件: *
* 日期: 2007-08-30 *
* 版本: 1.0 *
* 作者: *
* *
********************************************************************************/
#include <sys/types.h>
#include <sys/socket.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
#include <stdio.h>
#include <time.h>
#include <signal.h>
#include <sys/errno.h>
#include <string.h>
#include <sys/time.h>
#include <stdlib.h>
int fd;
/********************************************************************
函 数 名:gps_open()
功 能:打开指定的串口设备,设置波特率
说 明:lpDevice 对应串口n为/dev/ttySn-1,也可以用
mknod -m 660 /dev/gps1 c 4 65 创建
入口参数:lpDevice 串口设备文件 nSpeed 波特率B+speed
返 回 值:成功 0 失败 -1
设 计:太福特电子
***********************************************************************/
int gps_open(char *lpDevice,int nSpeed)
{
struct termios oldios,newios;
int fd;
char log[80];

fd = open(lpDevice, O_RDWR | O_NOCTTY);
if (fd < 0)
{
sprintf(log,"Open device %s error!",lpDevice);
perror(log);
return -1;
}

tcgetattr(fd,&oldios);
bzero(&newios,sizeof(newios));

newios.c_cflag = nSpeed | CS8 | CLOCAL | CREAD;
//newios.c_cflag &=~CRTSCTS;
newios.c_iflag = IGNPAR;
newios.c_oflag = 0;
newios.c_lflag = 0;
newios.c_cc[VTIME] = 0;
newios.c_cc[VMIN] = 1;

tcflush(fd,TCIFLUSH);
tcsetattr(fd,TCSANOW,&newios);

return fd;
}
/********************************************************************
函 数 名:gps_read()
功 能:读取串口gps时间电文信息
说 明:每次返回一种类型的电文
入口参数:fd 文件句柄 pData 数据缓存地址 nSize 最大长度
返 回 值:成功 实际长度 失败 -1
设 计:太福特电子
***********************************************************************/
int gps_read(int fd,char *pData,int nSize)
{
int nRet;
int nRead;

nRead=0;
while (nRead<nSize)
{
nRet = read(fd,pData+nRead,1);
if(nRet<0)
{
if(errno==EINTR)
continue;
else
continue;
}
if(pData[0]!=‘$‘)
{
nRead=0;
memset(pData,0,nSize);
continue;
}
if(nRead > 1)
{
if(pData[nRead-1]==0x0d&&pData[nRead]==0x0a)
{
nRet=nRead;
break;
}
}

nRead++;
}
return nRet;
}
/********************************************************************
函 数 名:gps_write()
功 能:写入串口ntp状态信息
说 明:
入口参数:fd 文件句柄 pData 数据缓存地址 nSize 写入长度
返 回 值:成功 实际长度 失败 -1
设 计:太福特电子
***********************************************************************/
int gps_write(int fd,char *pData,int nSize)
{
int nRet;
nRet=write(fd,pData,nSize);
return nRet;
}
/********************************************************************
函 数 名:gps_close()
功 能:关闭串口
说 明:
入口参数:fd 文件句柄
返 回 值:
设 计:太福特电子
***********************************************************************/
int gps_close(int fd)
{
return close(fd);
}
static char *
field_parse(
char *cp,
int fn
)
{
char *tp;
int i = fn;

for (tp = cp; *tp != ‘\0‘; tp++) {
if (*tp == ‘,‘)
i--;
if (i == 0)
break;
}
return (++tp);
}
int gps_settime(char *timecode)
{
char *cp;
char *dp;
char lptime[256];
int bRet=1;
char acDay[8];
char acMonth[8];
char acYear[8];
char acHour[8];
char acMin[8];
char acSec[8];
int nDays;
int nYear;
int nMonth;
int nDay;
int nHour;
int nMin;
int nSec;
struct tm tmgps;
time_t codetime;
struct timeval tv;
struct timezone tz;

cp = timecode;
dp = field_parse(cp,2);
if( dp[0] != ‘A‘)
{
bRet=0;
}
if(bRet==1)
{
dp = field_parse(cp,9);
memset(acDay,0,8);
strncpy(acDay,dp,2);
nDay=atoi(acDay);
memset(acMonth,0,8);
strncpy(acMonth,dp+2,2);
nMonth=atoi(acMonth);

memset(acYear,0,8);
strncpy(acYear,dp+4,2);
nYear=atoi(acYear)+2000;

dp = field_parse(cp,1);
memset(acHour,0,8);
memset(acMin,0,8);
memset(acSec,0,8);

strncpy(acHour,dp,2);
strncpy(acMin,dp+2,2);
strncpy(acSec,dp+4,2);
nHour=atoi(acHour);
nMin=atoi(acMin);
nSec=atoi(acSec);
sprintf(lptime,"%04d-%02d-%02d %02d:%02d:%02d",nYear,nMonth,nDay,nHour,nMin,nSec);
strptime(lptime, "%Y-%m-%d %H:%M:%S", &tmgps);
codetime = mktime(&tmgps);

gettimeofday(&tv, &tz);
tv.tv_sec=codetime+tz.tz_minuteswest*-60;
tv.tv_usec = 399000;
settimeofday(&tv, &tz);
sprintf(lptime,"$datetime,%02d%02d%02d,%02d%02d%02d,*hh\r\n",nDay,nMonth,nYear-2000,nHour,nMin,nSec);
gps_write(fd,lptime,strlen(lptime));
}
return bRet;
}
void MySleep(int nSec)
{
time_t timep;
struct tm *p;
int nCurSec;
int nDelay;
struct timeval tv;
struct timezone tz;

time(&timep);
p=localtime(&timep);
nCurSec=p->tm_sec;
nDelay=nSec;
while( nDelay > 0 )
{
usleep(1);
time(&timep);
p=localtime(&timep);
if(nCurSec!=p->tm_sec)
{
nDelay--;
nCurSec=p->tm_sec;
}

}
return;
}
int GetRefStat()
{
char szTemp[255];
FILE* fd;
char *cp;
fd=fopen("/var/gps.dat","r");
if(fd==NULL)
{
return -1;
}
fgets(szTemp,255,fd);
fclose(fd);
cp=field_parse(szTemp,4);
if(cp!=NULL)
{
return cp[0]-0x30;
}
else
return -1;
}
int
main()
{
int nRet,i;
int ncount=0;
char buf[256];
time_t timep;
struct tm *p;
char lptime[256];
int nRefStat;

fd=gps_open("/dev/ttyS3",B115200);/*根据实际情况修改串口*/
printf("lptime1=%s\n",lptime);
if(fd<0)
{
perror("Open gps error!");
return -1;
}
// daemon(0, 0);/*以后台方式运行*/
while(1)
{
time(&timep);
p=gmtime(&timep);
//nRefStat = GetRefStat();
sprintf(lptime,"$datetime,%02d%02d%02d,%02d%02d%02d,%d,*hh\r\n",p->tm_mday,p->tm_mon+1,p->tm_year-100,p->tm_hour,p->tm_min,p->tm_sec,nRefStat);
printf("send lptime=%s\n",lptime);

int OK=gps_write(fd,lptime,strlen(lptime));
printf("ok=%d",OK);
MySleep(1);
}

return 0;
}

时间: 2024-10-17 22:43:34

发送时间码的相关文章

信用卡空卡代还APP平台垫资系统开发送源码

信用卡空卡代还APP平台垫资系统开发送源码请致电王经理-153-1555-9232微信号同号你是否有用过信用卡低还款,结果每月支付的高利息,让你难以承受?你是否有过因为要还大额信用卡,找朋友借,发现钱真不是那么好借?你是否有过为还信用卡拆了东墙补西墙,多张信用卡互还,让你焦头烂额?稍不留心逾期了,导致被降额度.上征信名单,简直欲哭无泪.该怎么办?此时如果有一款产品可以让你可以轻松还款,解决还款和逾期难题是不是很好呢?垫付app智能信用卡管家软件.正是你需要的信用卡还款神器,具备如下几大特性:低费

工具类学习-java实现邮件发送激活码

问题:用java实现服务器发送激活码到用户邮件. 步骤一:如果是个人的话,确保在本地安装邮件服务器(易邮服务器)和邮件客户端(foxmail). 步骤二:导入jar包  mail.jar,其他的需要什么协议导什么jar. package cn.itcast.store.utils; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.M

Python邮件发送源码

从最初的实现邮件发送功能,改了几次,有了如下代码. 该代码还可以继续开发,完善.以实现更复杂的功能. #-*- coding:utf-8 -*- i = 0 while i < 10: import smtplib from email.mime.text import MIMEText from email.header import Header import time # 第三方 SMTP 服务 mail_host="smtp.qq.com" #设置服务器 mail_use

Php邮件发送源码

好久冒写点东西了.....最近生活压抑的很....为生活而劳累,整理下邮件发送的实例了,网上也有很多,我这个也是提取整理好的,测试Ok,首页邮件类smtp_email_class.php如下:<?phpclass email{function send_mail($to,$subject,$message,$from,$from_name,$mailformat=1){if(function_exists('mail')){ $headers = 'From: '.$from_name.'<'

ios开发-日期处理(类似朋友圈,微博等的发送时间)

ios开发中,我们经常要处理从服务器获取的时间.类似朋友圈,微博这些应用.我们经常可以看到“刚刚”,“31分钟前发表”,“昨天5点”,之类的字样. 当时我们从服务器端获取的都是那条朋友圈信息,或者微博的创建时间.所以我们每次显示数据的时候,都需要根据跟当前的时间做对比,按照格式,算出 我们想要的结果. 例如,我们从服务器获取的时间,大概都类似于  Sun May 24 12:12:00 +0800 2015 我们还是先详细说明一下日期格式吧 年 y 将年份 (0-9) 显示为不带前导零的数字 y

Python简单邮件发送源码

环境: Python27 主要代码: # -*- coding: utf-8 -*- ''' Created on 2016年10月18日 @author: xuxianglin ''' import smtplib; from email.MIMEText import MIMEText from email.utils import formataddr from_addr='[email protected]' #发件人邮箱账号,为了后面易于维护,所以写成了变量 to_addr='[ema

取没有date的邮件发送时间

有些邮件由于某些原因可能会没有dete属性,因此用getSentDate();跟getReceivedDate();方法是不到时间的, 在这种情况下就只能通过邮件的头信息来获取时间信息.如图: public String getHeader(){ Enumeration temp; String ReceivedDate=""; Date date=null; String[] lines = new String[]{"Received"};//获取Receive

FOSuserBundle(发送邀请码给用户)

http://symfony.com/doc/master/bundles/FOSUserBundle/adding_invitation_registration.html 上面的构建实体注册服务之类的按照文档去操作.对应自己的地方稍加修改即可. 运用方法 public function inviteAction() { $em = $this->getDoctrine()->getManager(); $invitation = new Invitation(); $em->pers

利用缓存、Timer间隔时间发送微信的实例,很有用的例子

//Class WechatOfferExcutor 此类为微信触发类,属于上层调用类,其中有用到用静态变量缓存offer信息,Task异步执行发送方法等 using Newtonsoft.Json.Linq;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Threading.Tas