RET區塊鏈
⑴ 移動pos機顯示模塊無應答和ret=02怎麼回事
移動信號不好,到室外找個寬敞的地方,關機重啟,然後簽到成功就可以用了。
⑵ 求助大牛!C++編程,如何查詢資料庫中多條記錄的多個欄位值,並且返回到一個數據塊中...急急急!
額。。寫個個簡單的樣列,用的是ODBC,比較直接。使用ADO的話雖然代碼少,但是看起來不是很好理解。你可以自己去網路學學~
用到的函數都比較容易理解,我就沒多加說明了,如果有不理解的復制函數名網路一下,會有詳細的說明的。大概的流程就是這樣了~
//包含頭文件
#include "windows.h"
#include "sqlext.h"
#pragma comment(lib,"odbc32.lib")
int main(int argc, char* argv[]){
//1.連接數據源(前提是你已經配置好了數據源,我用的sqlserver資料庫,怎麼配數據源網路一下~很簡單的)
//分配環境句柄, 保存一些驅動程序的信息
SQLHENV henv;//環境句柄
SQLRETURN sqlRet;
sqlRet = SQLAllocEnv(&henv);
if (sqlRet != SQL_SUCCESS && sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("分配環境句柄失敗!\n");
return -1;
}
//分配連接句柄
SQLHDBC hdbc;//連接句柄
sqlRet = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
if (sqlRet != SQL_SUCCESS && sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("分配連接句柄失敗!\n");
return -1;
}
//連接數據源(test是資料庫名字,sa 和sa 是用戶們和密碼,你替換即可)
sqlRet = SQLConnect(hdbc,(SQLCHAR*)"test",strlen("test"),(SQLCHAR*)"sa",2,(SQLCHAR*)"sa",2);
if (sqlRet != SQL_SUCCESS && sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("連接數據源失敗!\n");
return -1;
}
//2.執行SQL語句
//准備語句句柄
SQLHSTMT hstmt;
sqlRet = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
if (sqlRet != SQL_SUCCESS && sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("連接語句句柄失敗!\n");
return -1;
}
//設置游標類型(參看:http://blog.csdn.net/bichenggui/article/details/5601381)
sqlRet = SQLSetStmtOption(hstmt,SQL_ATTR_CURSOR_TYPE,SQL_CURSOR_KEYSET_DRIVEN);
if (sqlRet != SQL_SUCCESS && sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("設置游標類型失敗!\n");
return -1;
}
//執行SQL語句
//直接執行(你替換成你自己的sqlserver語句即可)
sqlRet = SQLExecDirect(hstmt,(SQLCHAR*)"insert into student values('lsk',21)",SQL_NTS);
if (sqlRet != SQL_SUCCESS && sqlRet != SQL_SUCCESS_WITH_INFO)
{
printf("執行SQL語句失敗!\n");
return -1;
}
//獲取結果集
SQLCHAR value[20]={0};
SQLINTEGER len = 0;
//移動游標(不移動前游標指向結果集第一列的前面)
SQLFetch(hstmt);
//取值(取的是結果集的第一列的值),第二個參數表示取第幾列
SQLGetData(hstmt,1,SQL_C_CHAR,value,20,&len);
printf("結果為:%s\n",value);
//假如結果集有多行則再次移動游標即可
SQLFetch(hstmt);
//然後再次取值
SQLGetData(hstmt,1,SQL_C_CHAR,value,20,&len);
//關閉句柄,釋放資源
SQLFreeHandle(SQL_HANDLE_STMT, hstmt); //釋放語句句柄
SQLDisconnect(hdbc); //斷開連接
SQLFreeHandle(SQL_HANDLE_DBC, hdbc); //釋放連接句柄
SQLFreeHandle(SQL_HANDLE_ENV, henv); //釋放環境句柄
return 0;
}
⑶ 智能交通這個行業的前景如何
我來講下智能交通的智能隧道方面發展吧~
隨著我國經濟快速發展,全國交通基礎設施進展迅速,我國已經成為世界上隧道最多,建設速度最快的國家。在新基建模式下城市與城市之間通過一系列的通道建設,形成了新的城市交通網路,我國的隧道研發與製造不斷發展壯大。
隧道作為高速路段的一個特殊附屬設施,是需要特別關注的,其封閉的構造內擁有數量龐大的設備。但是現有的管理系統存在硬體標准高、軟體水平低,智能檢測系統運用少,自動化程度低,以人工巡檢為主的情況。「養護管理難、應急處理難、安全管理難」成為了隧道運營管理的發展瓶頸。
以互聯網+和大數據為基礎對其進行數字化改造,形成低成本高效率的運營方式。那麼以higihtopo的只能隧道為例,給大家講解下其發展:
可視化管理系統直擊運維難點
1、細化運維鑄就行業領先者
隧道運維管理的精細與否,對於防止事故發生、減少事故損失有著至關重要的作用。在傳統運維模式下會出現:隧道內通風以及消防設備出現故障;內部照明、指示標、引導等設備性能變差;監控設備設置出錯無法有效掌控當下狀態做不到及時響應,不能准確掌控隧道內機電設備狀態;隧道系統難以一體化等情況,造成運營困難和大量安全隱患。
而可視化展現的是隧道全局,可通過遠程操控隧道內的風機或指示標,及時調整通風系統的運作方式。訪問隧道內不同設備,及時掌握其運行狀態。在出現緊急情況時,監控、交通管控、消防系統能夠協同工作,解決險情防止損失進一步擴大,從細節上決定成敗。
降低能耗符合時代發展
目前,我國隧道照明大多數採用高壓鈉燈。其電費高昂,2km左右的隧道每年就要消耗38萬元。照明線纜數量巨大布設復雜,給排查檢修帶來了不小的難度。調光控制較為落後,使得燈具長期陷入全功率負荷狀態,也容易因線路三相不平衡引發安全事故。採用數字化管理,改變了其用電方式,可根據交通量的變化,自行調光。減少出現隧道路面過亮、或明暗不均影響駕駛的現象發生。合理的進行電力資源配置,做到了綠色運行,減少了能耗成本。
3、高效應急處理減少損失
隧道是一個狹長的密閉空間,發生火災險情時,煙霧擴散快但不易排出,引導疏散難度大,救援空間有限。通過綜合監控系統可利用煙感以及多位監控設備,及時對隧道內部情況進行監測。通過車輛聯網監控對具有危險性的車輛進行定位。一旦出現險情,該路段立刻進行報警封閉,調動內部排風系統並預先啟動消防措施做到初步的搶險工作,配合外部救援行動形成雙重保險。
更多資料
圖撲軟體(Hightopo)是由廈門圖撲軟體科技有限公司獨立自主研發,基於HTML5標准技術的Web前端2D和3D圖形界面開發框架。非常適用於實時監控系統的界面呈現,廣泛應用於電信網路拓撲和設備管理,以及電力、燃氣等工業自動化 (HMI/SCADA) 領域。Hightopo提供了一套獨特的 WebGL 層抽象,將 Model–View–Presenter (MVP) 的設計模型延伸應用到了 3D 圖形領域。
⑷ RetHat Linux中怎麼配置多塊網卡
cd
/etc/sysconfig/network-cripts
網卡名稱ech0——ech7
vi
ifctg-eth0
//指定網卡標識(編輯)
DEVICE=ech0
//指定網卡標識
BOOTPROTO=none[yes]
//是否動態獲取IP
HWADDR=MAC地址
//網卡的MAC地址
NOBOOT=yes
//系統啟動時,載入網路
TYPE=Ethernet
//指定網卡的類型
NETMASK=
//掩碼
IPADDR=
//IP地址
GATEWAY=
//網關
配置完成後重啟網路,使配置文件生效:service
network
restart
⑸ C語言程序設計——編寫一個抽獎程序,生成0-9之間的隨機數,猜對了獎勵10塊錢,沒中獎顯示中獎號碼
代碼如下,已測試通過:
intmain()
{
intno,ret;
printf("請輸入你猜測的號碼: ");
scanf("%d",&no);
ret=rand()%10;
printf("本次開獎結果=[%d]: ",ret);
if(no==ret)
{
printf("恭喜你猜中了,中獎10元! ");
}
else
{
printf("很遺憾,再來一次吧! ");
}
return0;
}
可以把上面代碼改成多次輸入,即將輸入和取隨機數都放在while循環中。自己修改下吧
⑹ ipfs國家認可嗎
截至2020年,官方從未宣布任何合作夥伴或提供可以購買該商品。
星際文件系統是一個旨在創建持久且分布式存儲和共享文件的網路傳輸協議。它是一種內容可定址的對等超媒體分發協議。在IPFS網路中的節點將構成一個分布式文件系統。它是一個開放源代碼項目,自2014年開始由Protocol Labs在開源社區的幫助下發展。其最初由Juan Benet設計。
(6)RET區塊鏈擴展閱讀
系統的綜合優勢給ipfs帶來的顯著特性:
1、永久的、去中心化保存和共享文件 (區塊鏈模式下的存儲DHTs)。
2、點對點超媒體:P2P 保存各種各樣類型的數據(BitTorrent)。
3、版本化:可追溯文件修改歷史(Git - Merkle DAG默克爾有向無環圖))。
4、內容可定址:通過文件內容生成獨立哈希值來標識文件,而不是通過文件保存位置來標識。相同內容的文件在系統中只會存在一份,節約存儲空間。
⑺ made swiss pgc in rose gold ret是什麼意思,是一塊手錶背後雕刻的英文,有知道的朋友嗎
表芯晶元是瑞士的
手錶材質是玫瑰金
⑻ C語言運行俄羅斯方塊運行不了
N = 20;//行數
WIDTH = 20;//方塊邊長
level = 0;//開始等級(下落速度)
ret = new Array();//當前出現的方塊
nextret = new Array();//下一個出現的方塊
bg = new Array();//背景數組
createEmptyMovieClip("panel", 1048575);//所有方塊都在此mc里
for (i = 0; i < 5; i++) {
//初始化方塊數組,2*5格式,前四行代表每個方塊的4個小塊的位置坐標,最後一行第一列是方塊形狀,第二列是方塊旋轉方向
ret.push(new Array(2));
nextret.push(new Array(2));
}
for (i = 0; i < 20; i++) {//初始化背景數組,10*20格式
bg.push(new Array(10));
}
X = Y = panel._x = panel._y = 0;//換為X、Y表示
function reach(x:Number, y:Number, ret:Object) {
//x、y為方塊位置,ret為方塊形狀,若方塊ret下落一格碰到邊界或者方塊返回1
var i:Number, j:Number, k:Number;
for (i = 0; i < N; i++) {
for (j = 0; j < 10; j++) {
if (bg[i][j] == 219) {
for (k = 0; k < 4; k++) {
if (x + ret[k][0] == j && y + ret[k][1] + 1 == i) {
return 1;
}
}
}
}
}
return 0;
}
function lrnotout(lorr:Number, a:Object) {
//lorr==-1代表a往左邊一格可行性的判斷,lorr==1代表右邊一格可行性的判斷,lorr==0代表a的位置合理性的判斷,出現不合理則返回0
var i:Number;
if (lorr == -1) {
for (i = 0; i < 4; i++) {
if (x + a[i][0] - 1 < 0 || reach(x - 1, y - 1, a)) {
return 0;
}
}
}
if (lorr == 1) {
for (i = 0; i < 4; i++) {
if (x + a[i][0] + 1 > 9 || reach(x - 1, y + 1, a)) {
return 0;
}
}
}
if (lorr == 0) {
for (i = 0; i < 4; i++) {
if (x + a[i][0] < 0 || x + a[i][0] > 9) {
return 0;
}
}
}
return 1;
}
function rv(a:Object, ret:Object) {
//方塊賦值,將a方塊賦值到ret方塊
var i:Number;
for (i = 0; i < 5; i++) {
ret[i][0] = a[i][0], ret[i][1] = a[i][1];
}
}
function rotate(ret:Object) {
//根據方塊ret最後一行(分別是形狀指示變數和旋轉方向變數)為ret的前四行賦以具體形狀值
switch (ret[4][0]) {
case 0 ://方形
a = [[1, 0], [2, 0], [1, 1], [2, 1], [0, 0]];
rv(a, ret);
return;
case 1 ://長形
switch (ret[4][1]) {
case 1 :
a = [[0, 0], [1, 0], [2, 0], [3, 0], [1, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[1, 0], [1, 1], [1, 2], [1, 3], [1, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
case 2 ://Z形
switch (ret[4][1]) {
case 1 :
a = [[0, 1], [1, 1], [1, 2], [2, 2], [2, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[2, 0], [1, 1], [2, 1], [1, 2], [2, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
case 3 ://反Z形
switch (ret[4][1]) {
case 1 :
a = [[1, 1], [2, 1], [0, 2], [1, 2], [3, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[1, 0], [1, 1], [2, 1], [2, 2], [3, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
case 4 ://T形
switch (ret[4][1]) {
case 3 :
a = [[1, 0], [0, 1], [1, 1], [2, 1], [4, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[1, 0], [0, 1], [1, 1], [1, 2], [4, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 1 :
a = [[0, 1], [1, 1], [2, 1], [1, 2], [4, 2]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 2 :
a = [[1, 0], [1, 1], [2, 1], [1, 2], [4, 3]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
case 5 ://倒L形
switch (ret[4][1]) {
case 3 :
a = [[1, 0], [2, 0], [1, 1], [1, 2], [5, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[0, 1], [0, 2], [1, 2], [2, 2], [5, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 1 :
a = [[2, 0], [2, 1], [1, 2], [2, 2], [5, 2]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 2 :
a = [[0, 1], [1, 1], [2, 1], [2, 2], [5, 3]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
case 6 ://L形
switch (ret[4][1]) {
case 3 :
a = [[1, 0], [2, 0], [2, 1], [2, 2], [5, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[0, 1], [1, 1], [2, 1], [0, 2], [5, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 1 :
a = [[1, 0], [1, 1], [1, 2], [2, 2], [5, 2]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 2 :
a = [[2, 1], [0, 2], [1, 2], [2, 2], [5, 3]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
}
}
function generate(ret:Object) {//隨機產生方塊函數(可進一步修正)
ret[4][0] = Math.floor(Math.random() * 7);
ret[4][1] = Math.floor(Math.random() * 4);
rotate(ret);//完成方塊ret的具體形狀的賦值
}
function init() {//初始化背景、方塊、運動函數
var i:Number, j:Number;
for (i = 0; i < N; i++) {//初始化背景,邊界為219,其餘為' '
for (j = 0; j < 10; j++) {
if (i == N - 1) {
bg[i][j] = 219;
} else {
bg[i][j] = ' ';
}
}
}
for (i = 0; i < 5; i++) {//為當前方塊賦初值0
ret[i][0] = ret[i][1] = 0;
}
generate(ret);//產生當前方塊
generate(nextret);//產生下一個方塊
y = 0, x = 3, score = lines = 0, level=0;//當前位置坐標和計分系統初始化
_tetris.removeTextField();//如果從結束過的游戲恢復,刪除結束標志
display();//顯示畫面
frameflag = 0;//標示下落時間間隔
onEnterFrame = function () {
frameflag++;
if (10 - frameflag < level) {//根據等級level確定下落時間間隔
frameflag = 0;
go();//下落及判斷
}
};
}
function drawblock(a, b, c, d) {//繪制方塊的小塊
with (panel) {
beginFill(0x000FFF, 100);
lineStyle(1, 0xFF00FF);
moveTo(panel._x + a, panel._y + b);
lineTo(panel._x + c, panel._y + b);
lineTo(panel._x + c, panel._y + d);
lineTo(panel._x + a, panel._y + d);
lineTo(panel._x + a, panel._y + b);
endFill();
}
}
function erase() {//刪除一行方塊
var n:Number = 0, i:Number, j:Number, k:Number, l:Number;
for (i = 0; i < N - 1; i++) {
for (j = 0; j < 10; j++) {
if (bg[i][j] == ' ') {//如果該行有空,則開始判斷下一行
i++, j = -1;
if (i == N - 1) {//行N-1為底線,不判斷
break;
}
} else if (j == 9) {//判斷到該行最後一列都沒有空
for (k = i; k >= 1; k--) {//上方方塊下落
for (l = 0; l < 10; l++) {
bg[k][l] = bg[k - 1][l];
}
}
for (l = 0; l < 10; l++) {//刪除該行
bg[0][l] = ' ';
}
n++;//此次刪除行數變數增一
if ((lines + n) % 30 == 0) {//刪除行數總數到30的倍數則等級上升
level = (level + 1) % 10;
}
}
}
}
lines += n, score += (n * n + n) * 50;//總行數增n,計算得分
}
function display() {
//顯示函數,採用全部清除再重繪制的方法(因為這個程序本來是在Turbo C 2.0的文本環境下完成的)
var i:Number, j:Number;
panel.clear();
with (panel) {//畫邊界
lineStyle(1, 0x0000FF);
moveTo(panel._x, panel._y);
lineTo(panel._x + WIDTH * 10, panel._y);
lineTo(panel._x + WIDTH * 10, panel._y + WIDTH * (N - 1));
lineTo(panel._x, panel._y + WIDTH * (N - 1));
lineTo(panel._x, panel._y);
}
for (i = 0; i < 4; i++) {//當前方塊占據的地方賦值為邊界類型219
bg[y + ret[i][1]][x + ret[i][0]] = 219;
}
for (i = 0; i < N - 1; i++) {//繪制背景方塊
for (j = 0; j < 10; j++) {
if (bg[i][j] == 219) {
drawblock(j * WIDTH + X, i * WIDTH + Y, j * WIDTH + WIDTH + X, i * WIDTH + WIDTH + Y);
}
}
}
for (i = 0; i < 4; i++) {//繪制當前方塊
drawblock(nextret[i][0] * WIDTH + 14 * WIDTH + X, nextret[i][1] * WIDTH + 12 * WIDTH + Y, nextret[i][0] * WIDTH + WIDTH + 14 * WIDTH + X, nextret[i][1] * WIDTH + WIDTH + 12 * WIDTH + Y);
}
for (i = 0; i < 4; i++) {//當前方塊繪制完畢,重新將當前位置改為' '
bg[y + ret[i][1]][x + ret[i][0]] = ' ';
}
createTextField("_lvltxt", 1, 270, 100, 100, 20);//繪制計分系統
createTextField("_scrtxt", 2, 270, 130, 100, 20);
createTextField("_lnstxt", 3, 270, 160, 100, 20);
_lvltxt.text = "Level: " + level;
_scrtxt.text = "Score: " + score;
_lnstxt.text = "Lines: " + lines;
}
function go() {//下落函數
var sss:Number = reach(x, y, ret);//當前方塊下落一格是否碰到邊界或方塊
var ii:Number;
if (!sss) {
y++;//如果當前方塊下落一格沒有碰到邊界或方塊則下落一格
}
display();//重新繪制
if (sss) {//碰到邊界或方塊
score += 10;//得10分
display();//重新繪制
for (ii = 0; ii < 4; ii++) {//修改背景數組,將當前方塊的位置改為邊界類型
bg[y + ret[ii][1]][x + ret[ii][0]] = 219;
}
erase();//刪除行判斷及執行
rv(nextret, ret);//將下一個方塊賦值為當前方塊
y = 0, x = 3;//重置方塊位置
generate(nextret);//生成下一個方塊
display();//重新繪制
if (reach(x, y, ret)) {//如果下一格碰到方塊則游戲結束
createTextField("_tetris", 100000, WIDTH * 3.3, WIDTH * N / 3, 70, 20);
_tetris._x += 200;
_tetris._y += 50;
_tetris._xscale = 300;
_tetris._yscale = 300;
_tetris.background = true;
_tetris.text = "Game Over!";
onEnterFrame = function () {//停止下落
};
}
}
}
function key() {
if (Key.isDown(Key.UP)) {
rotate(ret);
display();
}
if (Key.isDown(Key.LEFT)) {
if (lrnotout(-1, ret)) {//左移可行性判斷
x--;
display();
}
}
if (Key.isDown(Key.RIGHT)) {
if (lrnotout(1, ret)) {//右移可行性判斷
x++;
display();
}
}
if (Key.isDown(Key.DOWN)) {//鍵盤控制下落
go();
}
if (Key.isDown(Key.SPACE)) {//一鍵下落到底
while (!reach(x, y, ret)) {
y++;
}
go();
}
if (Key.isDown(82)) { //重新開始游戲
init();
}
}
init();//初始化
setInterval(key, 80);//每個80毫秒執行一次鍵盤事件函數
createTextField("hinttxt",33324,200,20,300,50);
hinttxt.text="鍵盤鍵:上,下,左,右,R(reset),空格";