Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
colorEagleStdio
zoompipeline
提交
66fa83cb
zoompipeline
项目概览
colorEagleStdio
/
zoompipeline
通知
181
Star
12
Fork
4
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
zoompipeline
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
66fa83cb
编写于
2月 18, 2014
作者:
丁劲犇
😸
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
First App-Layer msg ok
上级
4823cb62
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
175 addition
and
38 deletion
+175
-38
FunctionalClientTest/maindialog.cpp
FunctionalClientTest/maindialog.cpp
+36
-12
FunctionalClientTest/maindialog.h
FunctionalClientTest/maindialog.h
+1
-1
QTcpClientTest/qtcpclienttest.cpp
QTcpClientTest/qtcpclienttest.cpp
+1
-1
ZoomPipeline_FuncSvr/network/zp_nettransthread.cpp
ZoomPipeline_FuncSvr/network/zp_nettransthread.cpp
+3
-3
ZoomPipeline_FuncSvr/pipeline/zp_pltaskbase.h
ZoomPipeline_FuncSvr/pipeline/zp_pltaskbase.h
+4
-4
ZoomPipeline_FuncSvr/smartlink/st_clientnode.cpp
ZoomPipeline_FuncSvr/smartlink/st_clientnode.cpp
+12
-12
ZoomPipeline_FuncSvr/smartlink/st_clientnode.h
ZoomPipeline_FuncSvr/smartlink/st_clientnode.h
+3
-1
ZoomPipeline_FuncSvr/smartlink/st_clientnode_impdeal.cpp
ZoomPipeline_FuncSvr/smartlink/st_clientnode_impdeal.cpp
+113
-4
ZoomPipeline_FuncSvr/smartlink/st_msg_applayer.h
ZoomPipeline_FuncSvr/smartlink/st_msg_applayer.h
+2
-0
未找到文件。
FunctionalClientTest/maindialog.cpp
浏览文件 @
66fa83cb
...
...
@@ -24,9 +24,9 @@ MainDialog::MainDialog(QWidget *parent) :
QSettings
settings
(
"goldenhawking club"
,
"FunctionalClientTest"
,
this
);
ui
->
lineEdit_ip
->
setText
(
settings
.
value
(
"ip"
,
"localhost"
).
toString
());
ui
->
lineEdit_Port
->
setText
(
settings
.
value
(
"port"
,
"23456"
).
toString
());
ui
->
lineEdit_ip
->
setText
(
settings
.
value
(
"
settings/
ip"
,
"localhost"
).
toString
());
ui
->
lineEdit_Port
->
setText
(
settings
.
value
(
"
settings/
port"
,
"23456"
).
toString
());
ui
->
plainTextEdit_boxSerialNum
->
setPlainText
(
settings
.
value
(
"settings/box2svr_insid"
,
"Temporary Equip_id for test only, by goldenhawking@163.com.64Bts"
).
toString
());
}
MainDialog
::~
MainDialog
()
...
...
@@ -59,6 +59,7 @@ void MainDialog::on_client_disconnected()
{
displayMessage
(
QString
(
"client %1 disconnected."
).
arg
((
quintptr
)
pSock
));
ui
->
pushButton_connect
->
setEnabled
(
true
);
pSock
->
abort
();
}
}
void
MainDialog
::
displayError
(
QAbstractSocket
::
SocketError
/*err*/
)
...
...
@@ -91,6 +92,14 @@ void MainDialog::displayMessage(const QString &str)
while
(
model
.
rowCount
()
>=
256
)
model
.
removeRow
(
model
.
rowCount
()
-
1
);
}
void
MainDialog
::
saveIni
()
{
QSettings
settings
(
"goldenhawking club"
,
"FunctionalClientTest"
,
this
);
settings
.
setValue
(
"settings/ip"
,
ui
->
lineEdit_ip
->
text
());
settings
.
setValue
(
"settings/port"
,
ui
->
lineEdit_Port
->
text
());
settings
.
setValue
(
"settings/box2svr_insid"
,
ui
->
plainTextEdit_boxSerialNum
->
toPlainText
());
}
void
MainDialog
::
timerEvent
(
QTimerEvent
*
evt
)
{
static
int
nCount
=
0
;
...
...
@@ -113,13 +122,12 @@ void MainDialog::timerEvent(QTimerEvent * evt)
}
void
MainDialog
::
on_pushButton_connect_clicked
()
{
if
(
client
->
isOpen
()
==
false
)
client
->
connectToHost
(
ui
->
lineEdit_ip
->
text
(),
ui
->
lineEdit_Port
->
text
().
toUShort
());
else
client
->
disconnectFromHost
();
saveIni
();
client
->
connectToHost
(
ui
->
lineEdit_ip
->
text
(),
ui
->
lineEdit_Port
->
text
().
toUShort
());
}
void
MainDialog
::
on_pushButton_regisit_clicked
()
{
saveIni
();
quint16
nMsgLen
=
sizeof
(
SMARTLINK_MSG_APP
::
tag_app_layer_header
)
+
sizeof
(
stMsg_HostRegistReq
);
QByteArray
array
(
sizeof
(
SMARTLINK_MSG
)
+
nMsgLen
-
1
,
0
);
...
...
@@ -262,7 +270,7 @@ int MainDialog::filter_message(const QByteArray & block, int offset)
m_currentBlock
=
QByteArray
();
offset
=
blocklen
;
this
->
client
->
disconnectFromHos
t
();
this
->
client
->
abor
t
();
}
}
// end while block len > offset
...
...
@@ -271,11 +279,27 @@ int MainDialog::filter_message(const QByteArray & block, int offset)
//!deal current message
int
MainDialog
::
deal_current_message_block
()
{
//First, get uuid as soon as possible
//then , Start deal to-server messages
//Server - deal messages
//The bytes left to recieve.
qint32
bytesLeft
=
m_currentHeader
.
data_length
+
sizeof
(
SMARTLINK_MSG
)
-
1
-
m_currentMessageSize
;
if
(
bytesLeft
)
return
0
;
char
*
ptr
=
m_currentBlock
.
data
();
SMARTLINK_MSG_APP
*
pApp
=
(
SMARTLINK_MSG_APP
*
)(((
unsigned
char
*
)
(
ptr
))
+
sizeof
(
SMARTLINK_MSG
)
-
1
);
if
(
pApp
->
header
.
MsgType
==
0x1800
)
{
ui
->
lineEdit_boxid
->
setText
(
QString
(
"%1"
).
arg
(
pApp
->
MsgUnion
.
msg_HostRegistRsp
.
ID
));
displayMessage
(
tr
(
"Res = %1, ID = %2, Text = %3"
)
.
arg
(
pApp
->
MsgUnion
.
msg_HostRegistRsp
.
DoneCode
)
.
arg
(
pApp
->
MsgUnion
.
msg_HostRegistRsp
.
ID
)
.
arg
(
pApp
->
MsgUnion
.
msg_HostRegistRsp
.
TextInfo
)
);
}
displayMessage
(
tr
(
"Broadcast Message is not currently supported."
));
m_currentBlock
=
QByteArray
();
...
...
FunctionalClientTest/maindialog.h
浏览文件 @
66fa83cb
...
...
@@ -26,7 +26,7 @@ private:
QGHTcpClient
*
client
;
QStandardItemModel
model
;
int
nTimer
;
void
saveIni
();
//!Message Dealers
protected:
//!deal one message, affect m_currentRedOffset,m_currentMessageSize,m_currentHeader
...
...
QTcpClientTest/qtcpclienttest.cpp
浏览文件 @
66fa83cb
...
...
@@ -156,7 +156,7 @@ void QTcpClientTest::timerEvent(QTimerEvent * evt)
QList
<
QGHTcpClient
*>
listObj
=
m_clients
.
keys
();
for
(
int
i
=
0
;
i
<
nDel
;
i
++
)
{
listObj
.
at
(
i
)
->
disconnectFromHos
t
();
listObj
.
at
(
i
)
->
abor
t
();
}
}
QGHTcpClient
*
client
=
new
QGHTcpClient
(
this
,
ui
.
horizontalSlider
->
value
());
...
...
ZoomPipeline_FuncSvr/network/zp_nettransthread.cpp
浏览文件 @
66fa83cb
...
...
@@ -153,7 +153,7 @@ void zp_netTransThread::displayError(QAbstractSocket::SocketError socketError)
{
emit
evt_SocketError
(
pSock
,
socketError
);
qDebug
()
<<
(
pSock
->
errorString
());
pSock
->
disconnectFromHos
t
();
pSock
->
abor
t
();
}
}
...
...
@@ -228,7 +228,7 @@ void zp_netTransThread::KickAllClients(zp_netTransThread * ptr)
QTcpSocket
*
pSock
=
qobject_cast
<
QTcpSocket
*>
(
obj
);
if
(
pSock
)
{
pSock
->
disconnectFromHos
t
();
pSock
->
abor
t
();
}
}
...
...
@@ -246,7 +246,7 @@ void zp_netTransThread::KickClient(QObject * objClient)
QTcpSocket
*
pSock
=
qobject_cast
<
QTcpSocket
*>
(
objClient
);
if
(
pSock
)
{
pSock
->
close
();
pSock
->
abort
();
}
}
...
...
ZoomPipeline_FuncSvr/pipeline/zp_pltaskbase.h
浏览文件 @
66fa83cb
...
...
@@ -14,14 +14,14 @@ public:
virtual
int
run
()
=
0
;
int
addRef
()
{
QMutexLocker
locker
(
&
m_mutex
);
QMutexLocker
locker
(
&
m_mutex
_ref
);
refCount
++
;
return
refCount
;
}
int
delRef
()
{
QMutexLocker
locker
(
&
m_mutex
);
QMutexLocker
locker
(
&
m_mutex
_ref
);
refCount
--
;
return
refCount
;
...
...
@@ -29,13 +29,13 @@ public:
int
ref
()
{
QMutexLocker
locker
(
&
m_mutex
);
QMutexLocker
locker
(
&
m_mutex
_ref
);
return
refCount
;
}
private:
int
refCount
;
QMutex
m_mutex
;
QMutex
m_mutex
_ref
;
signals:
public
slots
:
...
...
ZoomPipeline_FuncSvr/smartlink/st_clientnode.cpp
浏览文件 @
66fa83cb
...
...
@@ -28,36 +28,36 @@ int st_clientNode::run()
while
(
--
nMessage
>=
0
&&
nCurrSz
!=
0
)
{
QByteArray
block
;
m_mutex
.
lock
();
m_mutex
_rawData
.
lock
();
if
(
m_list_RawData
.
size
())
block
=
*
m_list_RawData
.
begin
();
m_mutex
.
unlock
();
m_mutex
_rawData
.
unlock
();
if
(
block
.
isEmpty
()
==
false
&&
block
.
isNull
()
==
false
)
{
m_currentReadOffset
=
filter_message
(
block
,
m_currentReadOffset
);
if
(
m_currentReadOffset
>=
block
.
size
())
{
m_mutex
.
lock
();
m_mutex
_rawData
.
lock
();
m_list_RawData
.
pop_front
();
m_currentReadOffset
=
0
;
m_mutex
.
unlock
();
m_mutex
_rawData
.
unlock
();
}
}
else
{
m_mutex
.
lock
();
m_mutex
_rawData
.
lock
();
//pop empty cabs
if
(
m_list_RawData
.
empty
()
==
false
)
m_list_RawData
.
pop_front
();
m_mutex
.
unlock
();
m_mutex
_rawData
.
unlock
();
}
m_mutex
.
lock
();
m_mutex
_rawData
.
lock
();
nCurrSz
=
m_list_RawData
.
size
();
m_mutex
.
unlock
();
m_mutex
_rawData
.
unlock
();
}
m_mutex
.
lock
();
m_mutex
_rawData
.
lock
();
nCurrSz
=
m_list_RawData
.
size
();
m_mutex
.
unlock
();
m_mutex
_rawData
.
unlock
();
if
(
nCurrSz
==
0
)
return
0
;
return
-
1
;
...
...
@@ -67,11 +67,11 @@ int st_clientNode::run()
int
st_clientNode
::
push_new_data
(
const
QByteArray
&
dtarray
)
{
int
res
=
0
;
m_mutex
.
lock
();
m_mutex
_rawData
.
lock
();
m_list_RawData
.
push_back
(
dtarray
);
res
=
m_list_RawData
.
size
();
m_mutex
.
unlock
();
m_mutex
_rawData
.
unlock
();
m_last_Report
=
QDateTime
::
currentDateTime
();
return
res
;
}
...
...
ZoomPipeline_FuncSvr/smartlink/st_clientnode.h
浏览文件 @
66fa83cb
...
...
@@ -46,7 +46,9 @@ protected:
bool
Deal_BoxToServer_Messages
();
//0x0001 msg, stMsg_HostRegistReq
QMutex
m_mutex_equipID
;
bool
RegisitNewNode
();
quint32
AssignNewEquipID
(
const
QString
&
serial
);
//data items
...
...
@@ -64,7 +66,7 @@ protected:
SMARTLINK_MSG_APP
m_current_app_header
;
//The raw data queue and its mutex
QList
<
QByteArray
>
m_list_RawData
;
QMutex
m_mutex
;
QMutex
m_mutex
_rawData
;
//UUID of this equipment
bool
m_bUUIDRecieved
;
...
...
ZoomPipeline_FuncSvr/smartlink/st_clientnode_impdeal.cpp
浏览文件 @
66fa83cb
...
...
@@ -3,6 +3,10 @@
#include <QSqlDatabase>
#include <QSqlQuery>
#include <assert.h>
#include <QCoreApplication>
#include <QMutexLocker>
#include <QSettings>
#include <QSqlError>
namespace
SmartLink
{
//0x0001 msg, stMsg_HostRegistReq
bool
st_clientNode
::
RegisitNewNode
()
...
...
@@ -11,25 +15,130 @@ bool st_clientNode::RegisitNewNode()
(
SMARTLINK_MSG_APP
*
)(
((
const
char
*
)(
m_currentBlock
.
constData
()))
+
sizeof
(
SMARTLINK_MSG
)
-
1
);
//form Msgs
quint16
nMsgLen
=
sizeof
(
SMARTLINK_MSG_APP
::
tag_app_layer_header
)
+
sizeof
(
stMsg_HostRegistRsp
);
QByteArray
array
(
sizeof
(
SMARTLINK_MSG
)
+
nMsgLen
-
1
,
0
);
char
*
ptr
=
array
.
data
();
SMARTLINK_MSG
*
pMsg
=
(
SMARTLINK_MSG
*
)
ptr
;
SMARTLINK_MSG_APP
*
pApp
=
(
SMARTLINK_MSG_APP
*
)(((
unsigned
char
*
)
(
ptr
))
+
sizeof
(
SMARTLINK_MSG
)
-
1
);
pMsg
->
Mark
=
0x55AA
;
pMsg
->
version
=
m_currentHeader
.
version
;
pMsg
->
SerialNum
=
m_currentHeader
.
SerialNum
;
pMsg
->
Priority
=
m_currentHeader
.
Priority
;
pMsg
->
Reserved1
=
0
;
pMsg
->
source_id
=
(
quint32
)((
quint64
)(
m_currentHeader
.
destin_id
)
&
0xffffffff
);
pMsg
->
destin_id
=
(
quint32
)((
quint64
)(
m_currentHeader
.
source_id
)
&
0xffffffff
);;
pMsg
->
data_length
=
nMsgLen
;
pMsg
->
Reserved2
=
0
;
pApp
->
header
.
AskID
=
m_current_app_header
.
header
.
AskID
;
pApp
->
header
.
MsgType
=
0x1800
;
pApp
->
header
.
MsgFmtVersion
=
m_current_app_header
.
header
.
MsgFmtVersion
;
stMsg_HostRegistRsp
&
reply
=
pApp
->
MsgUnion
.
msg_HostRegistRsp
;
//Check the database, find current equipment info
QSqlDatabase
db
=
m_pClientTable
->
dbRes
()
->
databse
(
m_pClientTable
->
Database_UserAcct
());
reply
.
DoneCode
=
2
;
reply
.
ID
=
0xffffffff
;
strcpy
(
reply
.
TextInfo
,
"Unknown error"
);
if
(
db
.
isValid
()
==
true
&&
db
.
isOpen
()
==
true
)
{
QSqlQuery
query
(
db
);
QString
s
ql
=
QString
(
"select * from instruments where equip_id = '%1'"
)
;
if
(
true
==
query
.
exec
(
sql
)
)
QString
s
trSerial
;
for
(
int
i
=
0
;
i
<
64
;
i
++
)
{
strSerial
+=
pAppLayer
->
MsgUnion
.
msg_HostRegistReq
.
HostSerialNum
[
i
];
}
QString
sql
=
"select host_serial_num,equip_id from instruments where host_serial_num = ?;"
;
query
.
prepare
(
sql
);
query
.
addBindValue
(
strSerial
);
if
(
true
==
query
.
exec
())
{
if
(
query
.
next
())
{
bool
bOk
=
false
;
int
ncurrid
=
query
.
value
(
1
).
toInt
(
&
bOk
);
if
(
bOk
==
true
)
{
if
(
ncurrid
>=
0x0010000
&&
ncurrid
<=
0x0FFFFFFF
)
{
reply
.
ID
=
ncurrid
;
reply
.
DoneCode
=
1
;
strcpy
(
reply
.
TextInfo
,
"Re-regisit Succeed."
);
}
else
{
reply
.
ID
=
AssignNewEquipID
(
strSerial
);
if
(
reply
.
ID
>=
0x0010000
&&
reply
.
ID
<=
0x0FFFFFFF
)
{
reply
.
DoneCode
=
0
;
strcpy
(
reply
.
TextInfo
,
"First-regisit Succeed."
);
}
else
strcpy
(
reply
.
TextInfo
,
"Equip ID resource error."
);
}
}
else
strcpy
(
reply
.
TextInfo
,
"Raw Dev ID Is Invalid."
);
}
else
{
// No such device
strcpy
(
reply
.
TextInfo
,
"No such device ID."
);
}
}
else
{
strcpy
(
reply
.
TextInfo
,
"Server Access Error."
);
emit
evt_Message
(
tr
(
"Database Access Error :"
)
+
query
.
lastError
().
text
());
}
}
else
{
//Server db is currently not accessable, wait.
strcpy
(
reply
.
TextInfo
,
"Server Not Accessable Now."
);
}
//Send back
emit
evt_SendDataToClient
(
this
->
sock
(),
array
);
return
reply
.
DoneCode
==
2
?
false
:
true
;
}
quint32
st_clientNode
::
AssignNewEquipID
(
const
QString
&
serial
)
{
QString
config_file
=
QCoreApplication
::
applicationDirPath
();
config_file
+=
"/serial.ini"
;
QSettings
settings
(
config_file
,
QSettings
::
IniFormat
);
QMutexLocker
locker
(
&
m_mutex_equipID
);
quint32
id
=
settings
.
value
(
"counter/serial"
,(
quint32
)
0x10000
).
toUInt
();
settings
.
setValue
(
"counter/serial"
,(
quint32
)(
id
+
1
));
QSqlDatabase
db
=
m_pClientTable
->
dbRes
()
->
databse
(
m_pClientTable
->
Database_UserAcct
());
QSqlQuery
query
(
db
);
QString
strSql
=
QString
(
"update instruments set equip_id = ? where host_serial_num = ?;"
);
query
.
prepare
(
strSql
);
query
.
addBindValue
(
id
);
query
.
addBindValue
(
serial
);
if
(
false
==
query
.
exec
())
{
id
=
0
;
emit
evt_Message
(
tr
(
"Database Access Error :"
)
+
query
.
lastError
().
text
());
}
return
true
;
return
id
;
}
}
ZoomPipeline_FuncSvr/smartlink/st_msg_applayer.h
浏览文件 @
66fa83cb
...
...
@@ -32,6 +32,7 @@ typedef struct tag_smartlink_app_layer{
union
union_MsgUnion
{
stMsg_HostRegistReq
msg_HostRegistReq
;
stMsg_HostRegistRsp
msg_HostRegistRsp
;
}
MsgUnion
;
}
SMARTLINK_MSG_APP
;
...
...
@@ -64,6 +65,7 @@ typedef struct tag_smartlink_app_layer{
union
union_MsgUnion
{
stMsg_HostRegistReq
msg_HostRegistReq
;
stMsg_HostRegistRsp
msg_HostRegistRsp
;
}
MsgUnion
;
}
SMARTLINK_MSG_APP
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录