Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Achou.Wang
4G
提交
be60f522
4
4G
项目概览
Achou.Wang
/
4G
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
4
4G
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
be60f522
编写于
12月 02, 2015
作者:
D
Du Rendong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add them
上级
3ea9b86e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
187 addition
and
30 deletion
+187
-30
display/src/display
display/src/display
+0
-0
display/src/display.cpp
display/src/display.cpp
+141
-30
display/src/msg_send.c
display/src/msg_send.c
+46
-0
display/src/send
display/src/send
+0
-0
未找到文件。
display/src/display
0 → 100755
浏览文件 @
be60f522
文件已添加
display/src/display.cpp
浏览文件 @
be60f522
...
...
@@ -167,7 +167,7 @@ int Set_Opt(int fd, int nSpeed, int nBits, char nEvent, int nStop)
perror
(
"Com set error"
);
return
-
1
;
}
// printf("
-
serial set (%d,%d,%c,%d)... done!\n", nSpeed,nBits,nEvent,nStop);
// printf("serial set (%d,%d,%c,%d)... done!\n", nSpeed,nBits,nEvent,nStop);
return
0
;
}
...
...
@@ -346,7 +346,7 @@ void initializeDLSX(){
DLSX
[
'3'
]
=
"20"
;
DLSX
[
'4'
]
=
"21"
;
DLSX
[
'5'
]
=
"22"
;
DLSX
[
'6'
]
=
"23"
;
DLSX
[
'7'
]
=
"24"
;
DLSX
[
'8'
]
=
"25"
;
DLSX
[
'9'
]
=
"26"
;
DLSX
[
'0'
]
=
"27"
;
DLSX
[
'"'
]
=
"49"
;
DLSX
[
'*'
]
=
"50"
;
DLSX
[
'<'
]
=
"51"
;
DLSX
[
'>'
]
=
"52"
;
/
*DLSX['.'] = "b1"; DLSX['-'] = "c9"; DLSX['x'] = "d4"; DLSX['%'] = "d5";*/
/
/DLSX['.'] = "b1"; DLSX['-'] = "c9"; DLSX['x'] = "d4"; DLSX['%'] = "d5";
DLSX
[
'.'
]
=
"63"
;
DLSX
[
'-'
]
=
"c9"
;
DLSX
[
'x'
]
=
"d4"
;
DLSX
[
'%'
]
=
"d5"
;
DLSX
[
','
]
=
"1b"
;
// dlsx don't support ',' just work as space;
DLSX
[
'+'
]
=
""
;
// dlsx don't support ',' just work as space;
...
...
@@ -376,6 +376,8 @@ class Item
public:
Item
(
DisplayType
type
,
DisplayDirection
disp
)
:
m_type
(
type
),
m_disp
(
disp
){}
virtual
int
Display
()
=
0
;
#if 0
virtual void DisplayOnVideo(string &value, string &position)
{
cout << "value = " << value << endl;
...
...
@@ -397,6 +399,14 @@ public:
cmd += " ff";
system(cmd.c_str());
}
#else
virtual
void
DisplayOnVideo
(
string
&
value
,
string
&
position
)
{
// |----------|----------|----------|----------|----------|----------|----------|----------|----------|------|
// IIIII CMCC TD LTE RX:x.xk/s TX:x.xk/s N37.09.39 E115.09.38
//char line_buf[97] = {0};
}
#endif
virtual
void
DisplayToStdout
(
string
&
value
)
{
cout
<<
value
<<
endl
;
...
...
@@ -411,8 +421,13 @@ public:
// private:
DisplayDirection
m_disp
;
DisplayType
m_type
;
// |----------|----------|----------|----------|----------|----------|----------|----------|----------|------|
// IIIII CMCC TD LTE RX:x.xk/s TX:x.xk/s N37.09.39 E115.09.38
static
char
line_buf
[
97
];
};
Item
::
line_buf
=
{
0
};
#include <sstream>
class
CSQ
:
public
Item
{
...
...
@@ -443,15 +458,16 @@ public:
stringstream
ss
;
ss
<<
dispvalue
;
ss
>>
disp
;
string
signal
;
if
(
disp
<=
6
)
signal
=
""
;
else
if
(
disp
<=
13
)
signal
=
"I"
;
else
if
(
disp
<=
20
)
signal
=
"II"
;
else
if
(
disp
<=
27
)
signal
=
"III"
;
else
if
(
disp
<=
31
)
signal
=
"IIII"
;
else
signal
=
"XXXX"
;
string
position
(
"20"
);
DisplayOnVideo
(
signal
,
position
);
char
signal
[
6
];
if
(
disp
<=
6
)
signal
=
" "
;
else
if
(
disp
<=
13
)
signal
=
"I "
;
else
if
(
disp
<=
20
)
signal
=
"II "
;
else
if
(
disp
<=
27
)
signal
=
"III "
;
else
if
(
disp
<=
31
)
signal
=
"IIII "
;
else
signal
=
"XXXX "
;
//string position("20");
//DisplayOnVideo(signal, position);
memcpy
(
line_buf
,
&
signal
,
strlen
(
signal
));
}
case
ToWebPage
:
DisplayOnWebPage
(
value
);
...
...
@@ -491,10 +507,11 @@ class PSART : public Item
switch
(
m_disp
)
{
case
ToVideo
:
{
string
dispvalue
=
value
.
substr
((
value
.
find
(
":"
)
+
2
));
string
position
(
"21"
);
DisplayOnVideo
(
dispvalue
,
position
);
}
string
dispvalue
=
value
.
substr
((
value
.
find
(
":"
)
+
2
));
//string position("21");
//DisplayOnVideo(dispvalue, position);
memcpy
(
line_buf
+
11
,
&
(
dispvalue
.
c_str
()),
strlen
(
dispvalue
.
c_str
()));
}
case
ToWebPage
:
DisplayOnWebPage
(
value
);
case
ToLogFile
:
...
...
@@ -535,10 +552,11 @@ class COPS : public Item
switch
(
m_disp
)
{
case
ToVideo
:
{
string
dispvalue
=
value
.
substr
(
value
.
find
(
"
\"
"
)
+
1
,
value
.
rfind
(
"
\"
"
)
-
value
.
find
(
"
\"
"
)
-
1
);
string
position
(
"22"
);
DisplayOnVideo
(
dispvalue
,
position
);
}
string
dispvalue
=
value
.
substr
(
value
.
find
(
"
\"
"
)
+
1
,
value
.
rfind
(
"
\"
"
)
-
value
.
find
(
"
\"
"
)
-
1
);
//string position("22");
//DisplayOnVideo(dispvalue, position);
memcpy
(
line_buf
+
6
,
&
(
dispvalue
.
c_str
()),
strlen
(
dispvalue
.
c_str
()));
}
case
ToWebPage
:
DisplayOnWebPage
(
value
);
case
ToLogFile
:
...
...
@@ -611,16 +629,16 @@ class NETRATE : public Item
if
((
disp_recv_rate
/
1024
)
>=
1
)
{
disp_recv_rate
=
disp_recv_rate
/
1024
;
sprintf
(
str
,
"RX
%.1fM
S"
,
disp_recv_rate
);
sprintf
(
str
,
"RX
:%.1fM/
S"
,
disp_recv_rate
);
}
else
{
sprintf
(
str
,
"RX
%.1fK
S"
,
disp_recv_rate
);
sprintf
(
str
,
"RX
:%.1fK/
S"
,
disp_recv_rate
);
}
}
else
{
sprintf
(
str
,
"RX
%.1fB
S"
,
disp_recv_rate
);
sprintf
(
str
,
"RX
:%.1fB/
S"
,
disp_recv_rate
);
}
string
value
(
str
);
...
...
@@ -634,16 +652,16 @@ class NETRATE : public Item
if
((
disp_tras_rate
/
1024
)
>=
1
)
{
disp_tras_rate
=
disp_tras_rate
/
1024
;
sprintf
(
str1
,
"TX
%.1fM
S"
,
disp_tras_rate
);
sprintf
(
str1
,
"TX
:%.1fM/
S"
,
disp_tras_rate
);
}
else
{
sprintf
(
str1
,
"TX
%.1fK
S"
,
disp_tras_rate
);
sprintf
(
str1
,
"TX
:%.1fK/
S"
,
disp_tras_rate
);
}
}
else
{
sprintf
(
str1
,
"TX
%.1fB
S"
,
disp_tras_rate
);
sprintf
(
str1
,
"TX
:%.1fB/
S"
,
disp_tras_rate
);
}
string
value1
(
str1
);
...
...
@@ -704,23 +722,23 @@ class GPS : public Item
if
(
info
.
lat
>
0
)
{
int
data
=
int
(
info
.
lat
);
sprintf
(
str
,
"
%d %d %dN
"
,
data
/
100
,
data
%
100
,
(
info
.
lat
-
data
)
*
60
);
sprintf
(
str
,
"
N%d %d %d
"
,
data
/
100
,
data
%
100
,
(
info
.
lat
-
data
)
*
60
);
}
else
{
int
data
=
(
int
)(
info
.
lat
);
sprintf
(
str
,
"
%d %d %dS
"
,
data
/
100
,
data
%
100
,
(
info
.
lat
-
data
)
*
60
);
sprintf
(
str
,
"
S%d %d %d
"
,
data
/
100
,
data
%
100
,
(
info
.
lat
-
data
)
*
60
);
}
if
(
info
.
lon
>
0
)
{
int
data
=
(
int
)(
info
.
lon
);
sprintf
(
str1
,
"
%d %d %dE
"
,
data
/
100
,
data
%
100
,
(
info
.
lon
-
data
)
*
60
);
sprintf
(
str1
,
"
E%d %d %d
"
,
data
/
100
,
data
%
100
,
(
info
.
lon
-
data
)
*
60
);
}
else
{
int
data
=
(
int
)(
info
.
lon
);
sprintf
(
str1
,
"
%d %d %dW
"
,
data
/
100
,
data
%
100
,
(
info
.
lon
-
data
)
*
60
);
sprintf
(
str1
,
"
W%d %d %d
"
,
data
/
100
,
data
%
100
,
(
info
.
lon
-
data
)
*
60
);
}
string
value
(
str
);
...
...
@@ -870,7 +888,7 @@ bool parse_config(const string & filename, map<string, string> & m)
}
// =============================================================================
int
main
(
int
argc
,
char
*
argv
[]
)
int
display_info
(
void
)
{
map
<
string
,
string
>
cfg
;
// key value for log config
...
...
@@ -920,3 +938,96 @@ int main(int argc, char* argv[])
}
return
0
;
}
// =============================================================================
#include <pthread.h>
void
*
start_wireless_thread
(
void
*
)
{
// start wireless network.
system
(
"pppd call td_lte"
);
display_info
();
return
NULL
;
}
pthread_t
start_wireless
(
void
)
{
pthread_t
p_wireless
;
int
ret
=
pthread_create
(
&
p_wireless
,
NULL
,
start_wireless_thread
,
NULL
);
if
(
ret
!=
0
)
{
fprintf
(
stderr
,
"create wireless_thread failed. errno = %d"
,
errno
);
exit
(
-
1
);
}
return
p_wireless
;
}
#define CMD_START_WIRELESS (1)
#define CMD_START_VPN (2)
#define CMD_STOP_WIRELESS (3)
#define CMD_STOP_VPN (4)
#define MAX_TEXT 256
struct
msg_st
{
long
mtype
;
long
cmd
;
char
data
[
MAX_TEXT
];
};
#include <sys/msg.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <errno.h>
int
main
(
int
argc
,
char
*
argv
[])
{
bool
running
=
true
;
int
msgid
;
long
msg_to_receive
=
0
;
pthread_t
p_wireless
;
struct
msg_st
recv_msg
;
msgid
=
msgget
((
key_t
)
0x004C5445
,
0666
|
IPC_CREAT
);
if
(
msgid
==
-
1
)
{
fprintf
(
stderr
,
"msgget failed with error: %d
\n
"
,
errno
);
exit
(
-
1
);
}
while
(
running
)
{
if
(
msgrcv
(
msgid
,
(
void
*
)
&
recv_msg
,
sizeof
(
recv_msg
)
-
sizeof
(
long
),
msg_to_receive
,
0
)
==
-
1
)
{
fprintf
(
stderr
,
"msgrcv failed with error: %d
\n
"
,
errno
);
exit
(
-
1
);
}
switch
(
recv_msg
.
cmd
)
{
case
CMD_START_WIRELESS
:
p_wireless
=
start_wireless
();
break
;
case
CMD_STOP_WIRELESS
:
system
(
"killall pppd"
);
pthread_cancel
(
p_wireless
);
break
;
case
CMD_START_VPN
:
break
;
case
CMD_STOP_VPN
:
break
;
default:
break
;
}
fprintf
(
stdout
,
"%s
\n
"
,
recv_msg
.
data
);
}
// Remove the message queue from the system and any data still on the queue.
if
(
msgctl
(
msgid
,
IPC_RMID
,
0
)
==
-
1
)
{
fprintf
(
stderr
,
"msgctl(IPC_RMID) failed
\n
"
);
exit
(
-
1
);
}
return
0
;
}
display/src/msg_send.c
0 → 100644
浏览文件 @
be60f522
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/msg.h>
#define MAX_TEXT 256
struct
msg_st
{
long
mtype
;
long
cmd
;
char
data
[
MAX_TEXT
];
};
int
main
()
{
int
running
=
1
;
struct
msg_st
some_data
;
int
msgid
;
char
buffer
[
MAX_TEXT
];
msgid
=
msgget
((
key_t
)
0x004C5445
,
0666
|
IPC_CREAT
);
if
(
msgid
==
-
1
)
{
fprintf
(
stderr
,
"msgget failed with error: %d
\n
"
,
errno
);
exit
(
EXIT_FAILURE
);
}
while
(
running
)
{
printf
(
"Enter some text: "
);
fgets
(
buffer
,
MAX_TEXT
,
stdin
);
some_data
.
mtype
=
1
;
strcpy
(
some_data
.
mtext
,
buffer
);
if
(
msgsnd
(
msgid
,
(
void
*
)
&
some_data
,
sizeof
(
some_data
)
-
sizeof
(
long
),
0
)
==
-
1
)
{
fprintf
(
stderr
,
"msgsnd failed
\n
"
);
exit
(
EXIT_FAILURE
);
}
if
(
strncmp
(
buffer
,
"end"
,
3
)
==
0
)
{
running
=
0
;
}
}
exit
(
EXIT_SUCCESS
);
}
display/src/send
0 → 100755
浏览文件 @
be60f522
文件已添加
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录