我在網頁繪圖時,現在常使用 D3 來幫客戶做成統計視覺圖表,但一定會遇到客戶要求在使用者界面上可以進行某些條件的過濾篩選,例如根據勾選或者執行某個按鈕(Button)時,可以顯示或隱藏網頁部分元素圖表,而這樣需求條件,我們就可以利用 Java Script D3 支援的 Filter 函數來實作此需求案例。
案例執行畫面如下
//完整程式碼如下:
<!DOCTYPE html>
< html>
< head>
<meta charset="utf-8">
<title>網智數位 Java Script D3 過濾資料技巧</title>
<link rel="stylesheet" type="text/css" href="styles.css"/>
<script type="text/javascript" src="d3.js"></script>
< /head><body>
<script type="text/javascript">
var data = [ // <- 程式碼註解 A
{price: 200, category: "捲簾"},
{price: 300, category: "直立式軌道"},
{price: 350, category: "木片百葉窗"},
{price: 500, category: "木竹簾羅馬"},
{price: 1000, category: "電動軌道"},
{price: 800, category: "蜂巢簾"},
{price: 900, category: "百葉窗"},
{price: 500, category: "壁紙"},
{price: 300, category: "耐磨地板"},
{price: 700, category: "衛浴"},
{price: 400, category: "馬桶"}
];function render(data, category) {
d3.select("body").selectAll("div.h-bar") // <- 程式碼註解 B
.data(data)
.enter()
.append("div")
.attr("class", "h-bar")
.append("span");d3.select("body").selectAll("div.h-bar") // <- 程式碼註解 C
.data(data)
.exit().remove();d3.select("body").selectAll("div.h-bar") // <- 程式碼註解 D
.data(data)
.attr("class", "h-bar")
.style("width", function (d) {
return (d.price) * 0.6 + "px";}
)
.select("span")
.text(function (d) {
return d.category;
});d3.select("body").selectAll("div.h-bar")
.filter(function (d, i) { // <- 程式碼註解 E
return d.category == category;
})
.classed("selected", true);
}render(data);
function select(category) {
render(data, category);
}
< /script><div class="control-group">
<button onclick="select('耐磨地板')">
耐磨地板
</button>
<button onclick="select('電動軌道')">
電動軌道
</button>
<button onclick="select('壁紙')">
壁紙
</button>
<button onclick="select()">
取消選取
</button>
< /div></body>
</html>
重點程式碼講解:
1. 程式碼註解 A ,我在這邊宣告了 一個 data 變數,它存放了一系列 json 格式的物件,該物件 有 2個屬性 分別為 price(記錄價格)、category(記錄類型)。
var data = [ // <- 程式碼註解 A
{price: 200, category: "捲簾"},
{price: 300, category: "直立式軌道"},
{price: 350, category: "木片百葉窗"},
{price: 500, category: "木竹簾羅馬"},
{price: 1000, category: "電動軌道"},
{price: 800, category: "蜂巢簾"},
{price: 900, category: "百葉窗"},
{price: 500, category: "壁紙"},
{price: 300, category: "耐磨地板"},
{price: 700, category: "衛浴"},
{price: 400, category: "馬桶"}
];2.程式碼註解 B,透過 D3 的選取方式
d3.select("body").selectAll("div.h-bar").data(data).enter()
這行程式碼,透將會將 所有數據與 網頁的 <div id=’h-bar’> ,做交集的動作,使得每個數據可以對應各自的 <div id=’h-bar’> 元素。
3.程式碼註解 D,將選取的 <div id=’h-bar’> ,根據 data 的 price 價格 用公式來設定長度,以及透過 text() 來設定文字。
d3.select("body").selectAll("div.h-bar") // <- 程式碼註解 D
.data(data)
.attr("class", "h-bar")
.style("width", function (d) {
return (d.price) * 0.6 + "px";}
)
.select("span")
.text(function (d) {
return d.category;
});4.程式碼註解 E,也是最重要的,我根據 d3 支援的 filter()函數,來過濾要選擇的資料。
d3.select("body").selectAll("div.h-bar")
.filter(function (d, i) { // <- 程式碼註解 E
return d.category == category;
})
.classed("selected", true);其他參考文章
HTML CSS 動畫教學–【軟體開發(軟件開發)】
繪圖程式-折線圖、區域圖 實作一
產品報告與能源曲線分析系統
利用 JavaScript D3 在網頁動態產生直條圖(軟體開發、軟件開發)
Java Script D3 資料過濾教學(軟體設計、軟體開發)
利用 JavaScript D3 在網頁動態產生直條圖(軟體開發、軟件開發)
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-5599-1310
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
2017年12月4日 星期一
Java Script D3 資料過濾教學(軟體設計、軟體開發)
2017年11月29日 星期三
利用 JavaScript D3 在網頁動態產生直條圖(軟體開發、軟件開發)
最近因為我再次改版窗簾產業的ERP軟體(窗簾產業真的是產品格式最多樣化,這又是個革命的軟體了,為了這個領域投入許多時間來了解產業知識),以及又承接越南的一系列的工廠生產系統與ERP,讓我沒有多餘時間可以分享技術文章,剛好近來網智數位開發團隊又承接南部大廠、以及群創科技大廠的10個工廠整合數據所需要的軟體開發案,需要用到大量的程式繪圖技術,之前我們如果遇到繪圖技術通常開發團隊都選擇用Windows Form 或 WPF相關技術直接程式繪圖產生,或者如果是企業商業軟體,我們常用報表開發工具,來產生一系列的數據圖表,有利於系統使用者,看圖來判斷數據、以利作決策分析、異常辨識統計,但這次客戶全部要求都是WEB化的資訊系統建置,所以我們全部採用了 Java Script 直接繪圖及時動態產生圖表。
也因為這樣所以我選擇寫一篇利用 Java Script D3 程式技術來示範教學,如何動態產生直條圖(當然也可以產生各式各樣的圖表、例如折線圖),不過這篇技術文章,我假設前提是讀者已經非常熟析Java Script 以及 HTML CSS 語法,也對 D3 有初步認識,或許以後我有機會也會補充撰寫 Java Script 與 D3 的文章。
該案例執行結果 畫面
![]()
在這個案例你首先要先下載 D3.js library (可以到 https://d3js.org/ 去下載最新的 D3.js 檔案,來引入在網頁理)
如下列程式碼,我就在 head 直接引用d3.js
<head>
<meta charset="utf-8">
<title>利用Java Sciprt Array 來產生圖表(網智數位)</title>
<link rel="stylesheet" type="text/css" href="styles.css"/>
<script type="text/javascript" src="d3.js"></script>
< /head>
接下來底下我寫了一個最主要的核心 Java Scirpt 程式碼
<script type="text/javascript">
var data = [ // <- 程式碼A
{width: 30, color: 23},{width: 35, color: 33},
{width: 50, color: 40},{width: 30, color: 60},
{width: 60, color: 22},{width: 65, color: 10},
{width: 65, color: 5},{width: 30, color: 30},
{width: 30, color: 60},{width: 70, color: 90},
{width: 15, color: 10}
];
var colorScale = d3.scale.linear()
.domain([0, 100])
.range(["#add8e6", "blue"]); // <- 程式碼B
function render(data) {
d3.select("body").selectAll("div.h-bar")
.data(data)
.enter().append("div")
.attr("class", "h-bar")
.append("span");
d3.select("body").selectAll("div.h-bar")
.data(data)
.exit().remove();
d3.select("body").selectAll("div.h-bar")
.data(data)
.attr("class", "h-bar")
.style("width", function (d) { // <-程式碼 C
return (d.width * 5) + "px"; // <- 程式碼D
})
.style("background-color", function(d){
return colorScale(d.color); // <- 程式碼E
})
.select("span")
.text(function (d) {
return d.width; // <-程式碼 F
});
}
function randVal() {
return Math.round(Math.random() * 100);
}
setInterval(function () {
data.shift();
data.push({width: randVal(), color: randVal()});
render(data);
}, 1500);
render(data);
< /script>
程式邏輯講解
程式碼A,主要是一堆有 Json 物件組成的陣列,而存在在變數 data 裡,這邊我只是單純為了講解,所以直接在程式開頭就把數據全部宣告起來,實務上在開發中,應該及時讀取後端資料庫、或者 WebAPI,取得 Jason 物件陣列.
程式碼B,主要是利用D3的一個 Scale 函數,這個函數可以接受一個數字參數,而轉換為標準的 CSS 顏色值。這個可以在程式碼E區段,套用漸層顏色的效果。
程式碼C,主要是利用 D3的選擇函數傳回的所有集合物件(就是網頁的HTML 標籤元素,在這邊是 div),套用在每個DIV的 Style 屬性,這邊我直接控制 Width 屬性,這樣就可以變更每個div元素的寬度尺寸。
程式碼D,宣告了一個function(d),而這個 d 參數實際上就是代表程式碼A裡 data 變數陣列的每個數據物件(Json)
function (d)
{
return (d.width * 5) + "px";
//這邊我可以直接使用 d.width ,因為 d 就是個jason物件, 而且擁有 width 屬性
}
程式碼E,套用 D3的 Scale函數,使得有漸層效果。
程式碼F,在透過 D3的 Select 函數,選取 <div> 裡面的子元素 <span>,然後在透過標準的 HTML DOM 支援的 text() 函數,動態設定數字文字。
其他參考文章
HTML CSS 動畫教學–【軟體開發(軟件開發)】
繪圖程式-折線圖、區域圖 實作一
產品報告與能源曲線分析系統
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-5599-1310
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
2017年11月9日 星期四
ERP 系統在中小企業如何有效利用條碼與QRCode(軟體開發、軟件開發、客製化軟體)

QRCode與條碼都具有輸入速度快、資料採集量大、可靠性和準確度高等優點,是一種最經濟、最實用的自動識別技術。
而目前為止,中小企業幾乎都會積極進行ERP 的導入與建置,但是成功上線的公司卻鳳毛麟角。而造成系統不能成功上線的原因大部分都是資料收集問題,所謂三分軟體,七分資料,可見資料對於整個系統導入成功的影響至關重要,如何將條形碼技術嵌入到ERP 系統中或使用QRCode來快速整合應用,進而提高ERP 系統基礎資料的採集效率,是擺在企業ERP 資訊部門面前的新課題。
網智數位-軟體開發團隊,專門協助中小型企業,成功將量身開發的ERP 軟體與條碼技術、QRCode 進行整合,實現了ERP 系統部分資料輸入、輸出流程,從人工操作到條碼化操作的轉變,從而提高了人工的效率,確保了ERP 主要資訊的統一性和準確性。
1 圖形條碼技術的原理和過程
目前,常見的條碼是由寬度不同、反射率不同的條和空按照一定的編碼規則編制成的,用以表達一組數字或字母符號訊息的圖形識別碼。即:條碼是一組粗細不同,按照一定的規則安排間距的平行線條圖形。產檢的條碼是由反射率相差很大的黑條和白條組成的。由於不同顏色的物體,其反射的可見光的波長不同,白色物體能反射各種波長的可見光,黑色物體則吸收各種波長的可見光,所以當條碼掃描器光源發出的光,照射到黑白相間的條碼上時,通過反射使光電轉換器接收到與白條和黑條相應的強弱不同的反射光信號,並轉換成相應的電信號輸出到放大整形電路。這樣,便得到了被辨讀的條碼符合的條和空的數目及相應的寬度和所用碼製,根據碼製所對應的編碼規則,便可將條形符號換成相應的數字字符訊息,通過接口電路送計算機進行資料處理與管理,便完成了條碼辨讀的全過程。
2 幫中小企業ERP 建設中遇到的資料問題
資訊化時代下,無論大中小企業都在進行資訊化與行動化建設,尤其對於許多企業在庫存物料種類多達 5000 ~ 8000 種,甚至上萬種物料,出入庫也很頻繁,僅僅依靠原來的人工錄入資料,資料的質量可想而知,肯定會有很多錯誤和缺陷。在生產方面,產品種類多,結構複雜,產品更新速度加快,對於產品質量的跟踪僅僅依靠ERP 系統也不能達到很好跟踪效果。在銷售方面,不同型號的產品源源不斷地投向市場,流向台灣各個縣市甚至其他國家區域,這些產品的跟踪記錄也是對中小企業資訊系統建置的一個考驗。而在庫存盤點方面,面對龐大的資料,倉庫管理人員通常都是抓大放小,造成庫存部門物料資訊不準確,進而是MRP 的運算不能發揮功效;要嘛花費大量的時間盤點整理資料,在盤點和整理資料中也會出現很多人為的錯誤。圖形條碼技術在ERP 中的應用,有效地解決了上述問題。
3 條碼技術在企業ERP 中的具體應用
3.1 條碼技術在倉儲管理模組的應用
在倉儲管理模塊中,可將庫存的物料訊息、貨位訊息打印製作成條形碼,即將物料按物料屬性、功能參數、價格高低、放置的合理貨位進行記錄,這樣,就可以將物料訊息和貨位訊息進行綁定。整理物料和貨位訊息是訊息化建設的基礎,沒有準確的物料訊息,訊息化建設就是一張白紙。而將物料訊息和貨位訊息綁定後,就可以對庫存的物料進行盤點。這樣,不但可以按貨位盤點,也可以按物料屬性進行盤點。盤點時,掃描條形碼即可調出物料名稱、規格型號、貨位、庫存數量、批次、盤點數量等訊息,然後將盤點資料輸入、保存即可完成對該條資料的盤點。另外,用入庫掃描機製作二維代碼,當物資和設備被調入庫時,操作人員將待存儲物資的名稱、規格型號、日期、批次、使用情況等訊息輸入PC 機,經過PC 機管理軟件製造出二維條碼並通過條碼打印機打印,然後粘貼在待入庫物資的表面。而掃描出庫時,物資需要出庫並登記時,由PC 機調集資料,向二維掃描槍發送出庫單,由掃描槍掃描物資上的條碼,完成後再將資料返回到PC 機,計算機收到訊息後,通過局域網送到資料庫,就可以更新庫存,完成出庫。而移庫管理時,倉庫對實物按庫位進行管理,統提供移庫管理功能,可實現庫位間的相互移動,以達到各庫位間商品的準確性。因此,出入庫、移庫、庫存盤點等功能的訊息輸入,就不需要依靠手工輸入,從而大大簡化了倉庫人員的操作難度和強度,為基礎訊息資訊的建設打下了堅實的基礎。
3.2 條碼技術在採購模組的應用
有了準確的庫存訊息、生產的產品計劃、產品的BOM 訊息,物料的在途、已佔用訊息,通過MRP 運算就能提供一份準確的物料需求計劃。根據這份物料需求計劃,採購部門就能製定相應的採購計劃進行採購作業。值得注意的是,當採購人員與供應商進行訂單及合約簽訂時,將物料的訊息屬性也傳達給了供應商。供應商提供出庫清單時,即包括本單位的物料條碼,此訂單號將作為該物料的批次進入來料接收、產品檢驗入庫、產品入庫各個環節,該批次條碼也在入庫、出庫,半成品、部件、產品中流轉。
3.3 條碼技術在生產模塊的應用
在生產環節,部件是由一個個原材料部件組成的,對於關鍵原材料都有對應的批次代碼,能追溯到採購的批次,同時部件本身也有批次碼,用於記錄生產該部件的時間及生產人員。依此類推,產品主機中又有大量的部件批次代碼。掃描主機就能調出關鍵部件的批次及生產時間,依次能展開這個產品的樹狀結構,直至用到那個批次的原材料。條碼技術的應用為產品質量的跟踪打下了基礎,實現了正向追溯和反向追溯,關注於從原材料採購到形成最終產品的可追溯性。通過分析最終產品與其組成部分(原材料、零件、部件和組件等)的批次組成關係,追溯產品批次及其加工歷史,以確定缺陷產品的分佈情況並找到缺陷產品產生的原因,進而對缺陷產品進行召回。
3.4 條碼技術在銷售模組的應用
產品在銷售環節,也要將唯一的產品機號與客戶的訂單綁定,由此從供應商到客戶的整個物流鏈通過一個個條形碼連接起來。產品包裝上的條碼訊息,可通過條碼掃描槍或者資料採集器採集該貨品條碼,實時核查本批產品所屬訂單號、產品代碼、明細規格、訂單數量及發貨日期等訊息。當客戶產品出貨時,用掃描器掃描出貨產品條碼,自動生成ERP 系統銷售出庫單,出庫單關聯銷售訂單號、客戶資訊等。
4 結論
條碼技術在ERP 中的應用,彌補了ERP 偏重對計劃的管控而無法監控物流現場執行情況的缺陷,也是企業物流過程透明化管理的有效途徑。一個個條碼從出入庫指令下達到產品完成,從供應商的採購到銷售環節的客戶的大物流中流轉,使整個過程清晰可見,可對產品的質量進行控制,同時也可對整個物流進行優化。通過一個個條碼,可實時獲取現場在製品、物料、物流過程各個環節的各種資訊。
網智數位-軟體開發,專門針對客戶進行量身設計的客製化軟體,已有多年經驗,也在不同產業領域都有實作成功案例。
(作者其他參考文章)
MPS主生產計畫專文介紹(一)
MRPⅡ/ERP 能力需求計畫原理
庫存管理-概念與釐清
庫存管理探討-VMI
真正的庫存量形成探討
庫存管理的中樞控管法則(上)
庫存管理的中樞控管法則(下)
庫存目標6大範疇(程式開發、程式設計、軟體開發、系統開發)
BOM表管理與設定﹣輔料是否需輸入BOM
何謂 進銷存、ERP、WMS?三者差異性【軟體開發、軟件開發、程式設計】
ERP 產品成本管理與計算
庫存量正確性衡量法則
粗能力需求計畫(RCCP) - 專文介紹
如何利用軟體來協助企業銷售統計和分析
開發進銷存、ERP、PDM,物料欄位收集與建立重要性(ERP開發、軟體開發、進銷存)
ERP 各種計劃階段的差異
ERP 系統的淺談與優勢
ERP 系統在中小企業如何有效利用條碼與QRCode
[ ERP/MRP 系統 ] - 專案導入深入剖析
ERP 導入的投資報酬評估(ERP客製化、進銷存軟體)
ERP 與 CRM 整合對企業的重要性(軟體開發、ERP客製化)
ERP思維突破:啟動企業智能革命,引領未來行銷新浪潮
AI時代的ERP:釋放企業潛能的新革命
一直突破開發技術、累積各種產業知識,而且在出版業、室內設計裝潢業、製造業、機電顧問、貿易、地板、窗簾、窗材、拉門、布料業的商業管理軟體投入有特別的領域知識、也在圖控軟體(圖控軟件)、機械手臂、 Android APP 、iPhone APP、3D列印 開發一直突破再創新,我們也堅持相信好的軟體可以協助企業,不管在管理營運角度、商品創新、決策分析等都絕對是不可缺少的關鍵因素,如果客戶您有任何軟體開發、程式開發委外需求,請聯繫我們讓我們協助您一起討論如何開發一個好的軟體來協助您。
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
2017年9月27日 星期三
(軟體開發、軟件開發、程式開發)產品報告與能源曲線分析系統
我們軟體開發團隊協助台灣最大的泵浦、機械軸封及聯軸器廠商,開發一個各種設備能源評估、價格建議的系統平台,協助客戶的業務可以精確地輸入潛在消費者的需求建議與評估,進而推薦可以使用的產品設備。
該平台我們也採用了微軟雲端的解決方案,協助客戶可以不用投入過多的電腦設備、以及IT人員維護,而且也可以隨著使用人數的遞增自動的加強雲端的效能,在不是尖峰使用時刻,自動降低系統效能,來節省整體的系統預算。
詳細更完整的功能說明,可以聯繫我們….
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
2017年9月7日 星期四
【軟體開發、軟體公司】FLIR 紅外線熱影像儀、局部放電-機電管理軟體
(部分功能畫面截取)
透過我們開發的檢測整合管理軟體,就可以直接進行報告的新增與維護
我們也知道,機電行業的拍攝工程師們,都非常辛苦,每天要拍上百張圖片,以往沒有管理軟體時,必須回到公司,公司行政人員、助理、甚至是工程師自己,需要花很多時間去手動,將照片轉存電腦資料夾,再歸檔整理圖片,再透過 Excel 很繁雜的一筆一筆的針對每個照片(可見光圖、紅外線圖),插入複製圖片,在輸入各種檢測資料,以及自行判讀是否發生異常現象,這些是花費大量的人力與時間成本,對公司對員工都不是很好的常態現象,尤其是每個月、每季、每年都重複發生,甚至有些客戶都是固定的地點需要進行拍攝維護,但卻沒有一個有效的流程與系統可以簡化不該浪費的成本,現在透過網智數位開發的管理軟體,這些不該浪費以及提升效率的問題,都可以大幅減低,又可以產生報告精美與正取的數據報告給客戶(快速有效地呈現給您們的客戶,提升您們的專業形象與競爭力),只需要一個按鈕,我們的軟體就幫您產生各式該產業客戶閱讀的報告。
軟體產生的報告,可以支援 HTML、PDF、Excel等標準各式輸出,直接呈現給客戶…
有效的從歷史的檢測報告進行篩選,快速找出所需要的案件資料
整合客戶管理系統,維護同一個客戶不同地區的資料、分站資料、用電場所
我們也將陸續整合台電所需要的報告格式,目前已經許多機電產業委託我們進行導入該軟體,這些廠商也大大的提升所需要的人力,把時間用在更有價值的地方,資料的管理與整合就交給一個好的軟體。
詳細更完整的功能說明,可以聯繫我們….
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
2017年9月6日 星期三
【軟體開發、系統開發、程式開發】多執行緒多任務存取相同變數,隔離保留各自任務的值 ThreadLocal 技術講解
在講解幾篇關於多工、多執行緒、平行作業的技術文章後,想來談談另外一個深入的關鍵多多執行緒的問題,那就是多執行緒(多工)作業模式下,如何存取相同變數值,而且又希望各自的執行緒對相同變數又有各自的“值”。
在 .Net 技術平台下,有個 ThreadLocal<T> 的泛型類別,這個類別可以專門用於有多個執行緒需要共同存取一個變數,但每個執行緒對這個變數的值,又個別記錄隔離儲存,互不影響。我舉個例子來說明,有執行緒A、執行緒B、執行緒C、執行緒D,這四個執行緒平行作業,將共同存取一個變數 X ,但在執行緒A存取變數X時,設定值為 10;執行緒B存取變數X時,設定值為 20;執行緒C存取變數X時,設定值為 30;執行緒D存取變數X時,設定值為 40; 在執行緒A設定 X變數值為 10時,並不會影響到 執行緒 B/C/D 各自設定的 X 變數值。
一樣在此,我透過一個程式範例來進行實例說明,這個專案類型就簡單用 Console 控制台類型來引導…
完整程式碼如下:
namespace NetQna.Demo
{
/// <summary>
/// ThreadLocal 示範教學(網智數位-軟體開發)
/// </summary>
public class Program
{
/// <summary>
/// 所有執行緒共同存取的變數值
/// </summary>
static ThreadLocal<int> X = new ThreadLocal<int>();
static void ExecThreadTask(object obj)
{
ThreadEntity currThread = (ThreadEntity)obj;
//在各自的執行緒環境設定 X 變數值,觀察各自的執行緒下,X 變數值各自記錄
X.Value = currThread.ThreadValue;
//顯示出 目前所在的執行緒 的值
Console.WriteLine($"現在的執行緒 ID:{Thread.CurrentThread.ManagedThreadId},{nameof(X)}變數值為:{X.Value}。");
//顯示出 目前所在的執行緒 的值
Console.WriteLine($"現在的執行緒 名稱:{currThread.ThreadName},{nameof(X)}變數值為:{X.Value}。");
Console.WriteLine();
}
static void Main(string[] args)
{
Dictionary<string, int> threadABCD = new Dictionary<string, int> { { "A", 10 }, { "B", 20 }, { "C", 30 }, { "D", 40 } };
//分別啟動 A、B、C、D 執行緒,並執行 存取 X 變數值
foreach (var t in threadABCD)
{
ThreadEntity obj = new ThreadEntity { ThreadName = t.Key, ThreadValue = t.Value };
//Action<string, int> action = ExecThreadTask(t.Key, t.Value);
Thread currThread = new Thread(ExecThreadTask);
currThread.Start(obj);
//這邊我刻意停頓 1 秒,以利顯示各自執行緒
Thread.Sleep(1000);
}
Console.Read();
X.Dispose(); //X 變數 釋放
}
public class ThreadEntity
{
public string ThreadName { get; set; }
public int ThreadValue { get; set; }
}
}
}
程式說明講解
一開始我宣告一個屬性變數為 X ,也就是今天講解主要的類別 ThreadLocal,
待會就是用 這個 X 變數,來讓所有執行緒進行存取設定 X 變數值。
宣告一個帶有 object 參數的方法,待會就是要讓所有執行緒去各自執行這個方法,這個方法主要我將 object 型態 的 參數 obj 轉型為我自己宣告的類別 ThreadEntity 類別(PS:因為 Thread 建構子對應的方法的參數只能是 object 型態,所以我透過轉型來避開這限制)。
public class ThreadEntity
{
public string ThreadName { get; set; }
public int ThreadValue { get; set; }
}
最關鍵的地方,我在這個方法設定了各自執行緒要對應的 X 變數值
//在各自的執行緒環境設定 X 變數值,觀察各自的執行緒下,X 變數值各自記錄
X.Value = currThread.ThreadValue;
我這邊分別建立 A、B、C、D 四個執行緒,然後分別設定他們待會要指定 X 變數的值為(10、20、30、40)。
程式執行結果如下圖![]()
可以看出 A、B、C、D執行緒各自維護自己 X 變數的值。
參考文章 C#多工作業與平行處理技術講解
1.透過 Thread 類別撰寫多執行緒多工作業。
2.透過 Delegate 委託支援的方法,撰寫非同步任務。
3-1.透過 Parallel 類別操控多任務平行作業(一)。
3-2. 透過 Parallel 類別操控多任務平行作業(二)。
4.使用 Task 自行控制非同步任務作業。
5.在非同步作業時,如何取消非同步任務。
6.多執行緒多任務存取相同變數,但卻各自隔離保留各自任務的值。
7.非同步存取變數的問題。
8.非同步資源鎖定解決方式。
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
2017年9月5日 星期二
在非同步作業時,如何取消非同步任務(軟體開發、程式設計、軟件開發)
既然有了 Task 任務類別的支援,可以讓我們輕易的撰寫多工、非同步作業的程式,讓長時間執行的程式透過另外一個執行緒(Thread)在背後執行,例如我常幫工廠或企業寫物料需求計算(MRP、MPS計算)、業績獎金計算、APS先進排程規劃,這些都是需要執行讀取大量的系統資料來進行運算,這就可以充分利用 Thrad、Task的技術再背後另外一個執行緒去執行,使用者,在前端主畫面還可以繼續執行其他作業,而不用只能等待程式執行完畢。
不過我們也常常遇到常時間執行的程式,我們可以提供一個按鈕讓使用者去選擇【取消】背後執行的任務,那麼這篇技術文章我就是想講解,如何在.Net 平台取消非同步化作業的任務 ,.net 平台裡有個類別專門跟 Task 、Task<TResult> 類別搭配使用,使得完成取消非同步任務作業的執行,這個類別就是 CancellationTokenSource 類別。
我在這邊一樣透過 Step By Step 來建立一個範例程式,來說明整個程式的撰寫技巧…
1.這邊我簡單為了好示範,我建立一個 Windows Form 視窗專案,命名為 CancellationTokenSource_Demo,如下圖:
2.在 Form1 表單,我設計了一下畫面
在Form1表單,我為了示範,所以放置了2個 Label (分別顯示 輸入一個正整數、運算結果顯示),2個 Button 按鈕(分別為 進行運算、取消非同步任務),還有一個 ProgressBar (作用於非同步任務執行時,可以顯示進度條狀態)。
3.在 Form1.cs 的後端程式,是最重要的,我把程式標註註解,這樣大家就可以容易理解了。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 宣告一個 用於支援取消非同步任務的變數
/// </summary>
private CancellationTokenSource cts = null;
private void btnCalc_Click(object sender, EventArgs e)
{
//取得的正整數
int currNum = 0;
if (!int.TryParse(txtInputInt.Text, out currNum))
{
MessageBox.Show("必須輸入一個正整數數字!");
return;
}
//清楚執行結果
txtFinalResult.Clear();
btnStartCalc.Enabled = false; //將【進行運算】按鈕啟用狀態取消
btnCancel.Enabled = true; //將【取消非同步任務】按鈕啟用狀態啟用
//用於顯示報告進度條的變數
IProgress<int> progRpt = new Progress<int>((p) =>
{
this.progressBar1.Value = p;
});
//如果 CancellationTokenSource 物件變數不是為 null , 比較進行釋放(務必)
if (cts != null)
{
cts.Dispose();
}
//實體化 CancellationTokenSource 物件
cts = new CancellationTokenSource();
//宣告一個任務變數
Task<string> task = new Task<string>(() =>
{
BigInteger bint = new BigInteger(1d);
double totalProgress = (double)currNum;
//如果CancellationTokenSource 物件的 IsCancellationRequested 值為 true ,代表使用者已經將非同步任務進行取消
for (int i = 1; i <= currNum && !cts.IsCancellationRequested; i++)
{
bint *= i; //相乘
double progressVal = Convert.ToDouble(i) / totalProgress * 100d;
//顯示非同步任務執行的進度表
progRpt.Report(Convert.ToInt32(progressVal));
}
//傳回執行結果
return bint.ToString();
}, cts.Token, TaskCreationOptions.LongRunning);
//開始執行非同步任務
task.Start();
//等待任務操作完成,等待1秒
while (!task.Wait(1000))
{
Application.DoEvents();
}
//顯示運算結果
txtFinalResult.Text = task.Result;
btnStartCalc.Enabled = true;
btnCancel.Enabled = false;
}
private void btnCancel_Click(object sender, EventArgs e)
{
//使用者執行取消非同步任務
if (cts != null)
{
cts.Cancel();
}
}
}
4.經過步驟3核心程式碼後,就可以編譯執行,執行結果畫面如下:
4-1.
執行運算中…
4-2.
中途,我執行【取消非同步任務】按鈕
完成上述這樣的示範,就可以撰寫讓使用者中途取消任務的執行。
參考文章
C#多工作業與平行處理技術講解
1.透過 Thread 類別撰寫多執行緒多工作業。
2.透過 Delegate 委託支援的方法,撰寫非同步任務。
3-1.透過 Parallel 類別操控多任務平行作業(一)。
3-2. 透過 Parallel 類別操控多任務平行作業(二)。
4.使用 Task 自行控制非同步任務作業。
5.在非同步作業時,如何取消非同步任務。
6.多執行緒多任務存取相同變數,但卻各自隔離保留各自任務的值。
7.非同步存取變數的問題。
8.非同步資源鎖定解決方式。
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
2017年9月1日 星期五
開發進銷存、ERP、PDM,物料欄位收集與建立重要性(ERP開發、軟體開發、進銷存)

品名或稱物料這個詞包含很多的性質。我們平常所感受到它的物理屬性、自然屬性,但今天我在這邊想要特別談的是它的管理欄位開立的重要性。因為物料除了包含有形的實體外,其實還可以包括服務等無形的東西。在大型管理軟體中(例如 SAP),與物料相關的東西,除了它的大小、形狀、重量等等之外,還包括了它的價格、它的儲位、它的供應商等,這些都是它的管理屬性(欄位)。這些屬性關聯到我們如何有效地去管理它的採購、它的儲存、它的銷售,也作為商業報表分析的欄位基準。
所以一般來說,幾乎大型ERP管理軟體對於物料(品名)這樣一個小元素就預留有幾乎近數百個控制項,這樣才可以讓我們窺見這些ERP管理軟體嚴密的錯綜複雜的管理邏輯。
而我們可以從四個方面來分解品名物料的管理屬性(欄位):
基本屬性
物料的基本屬性用於描述物料的設計特徵,這些屬性主要包括物料編碼、物料名稱、物料類型編碼、物料類型名稱、設計圖號、設計版次、生效日期、失效日期、品種規格(牌號、技術規格、技術條件和技術狀態)、預設的計量單位、單位重量、重量單位、單位體積和體積單位、尺寸單位等。
物料編碼和物料名稱都是物料的標識,物料編碼用於唯一標識物料,而物料名稱用於物料的輔助識別。物料類型編碼和物料類型名稱主要用於物料的統計分析。品種規格屬性描述物料的品牌、規格等資訊。
庫存與採購屬性
物料的採購和庫存屬性主要描述與採購、庫存管理有關的訊息,這些屬性包括物料製購類型、預設儲存倉庫、預設庫位、物料條碼、是否可用、ABC碼、盤點方式、循環盤點編碼、盤點週期、盤點日期、是否批次管理、批次號、批次有效天數、批次檢測週期、最新入庫日期、最新入庫量、最後出庫日期、最新出庫量、最新檢測日期、最新檢測結果、是否單件管理、是否限額領料、是否允許超採購訂單入庫、現有庫存量、最大庫存量、安全庫存量、物料平均日耗量、庫存金額、是否進價控制、物料計劃單價、進價上限率、預設供應商和在供應商使用的編碼等。
任何一家企業可以根據自身特點和條件來對物料的這一屬性進行管控。比如,物料製購類型包括自製件和採購件;企業可以有多個性質不同的倉庫,以便儲存來自不同的物料;如果公司物料管理方面採用了條碼管理,那麼,可以在物料條碼屬性中儲存該物料的條碼數據。條碼是否與物料編碼相同或關聯,也由公司的編碼規則確定。
再來談到庫存,還有一項不可分割的活動就是庫存盤點。庫存盤點是對每一種庫存物料進行清點數量、檢查質量和登記盤點表,且對盤盈盤虧數量進行物料帳面調整、達到物料帳物相符目標的管理過程。批次管理也是生產管理的一種重要手段。當某個物料有儲存有效期限制時,或需要對該物料的每一批物料進行跟踪控制時,可以採用批次管理功能。
計劃類屬性
物料的計劃類屬性主要描述與生產計劃管理相關的資訊,這些資訊包括確定物料需求的方式和物料需求的各種週期量的數據。例如,是否獨立需求、補貨政策、補貨週期、訂貨點、訂貨批量、採購或加工提前期、生產已分配量、銷售已分配量、不可用量、庫存可用量、批量政策、批量週期、預設工藝路線編碼、預設工藝路線名稱、是否可以替換、可替換物料編碼以及是否虛擬件等。
銷售類屬性
物料的銷售類屬性主要描述與物料銷售有關的資訊,包括銷售價格、銷售人員和銷售類型等內容。例如,銷售計劃價格、計價貨幣、折扣率、是否售價控制、銷價下限率、銷售成本科目、佣金、銷售人員編碼、預設的客戶編碼以及物料在買方使用的編碼等。
以上僅僅是從一個物料,我們就已經剖析出近百個管理屬性。由此可見一個複雜的ERP管理軟體是有著多麼錯綜複雜的管理網狀結構。 ERP的管理對象的複雜性,需求的多變性決定了我們不可能像引進機器一樣引進ERP,引進ERP的管理思想。它必須立足企業,融入企業自身的管理特徵與管理條件才能發揮作用,也才可以真正落實數據化流程管理。
而我在多年協助企業導入與量身定做開發ERP管理軟體時,很多企業在考慮實施導入的時候,往往只注重到了他們現有看的到、感覺的欄位屬性,但無論是何種生產類型生產什麼產品,無論企業的規模大小,他們都是根據客戶的需求確定什麼時候生產什麼產品生產多少數量,從而確定什麼時間採購和生產什麼物料,採購和生產多少數量。他們要對供應鏈上的物流、資訊流、資金流進行優化控制和管理,使資源利用最大化。他們都追求共同的目標:最大限度的縮短產品的生產週期和採購提前期,最大限度的降低庫存資金佔用,降低生產成本,準時交貨,提高生產能力,快速響客戶的需求。
但是決定ERP能否真正能給企業帶來經濟效益的,決定ERP實施成敗的關鍵因素,必須好好討論物料品名欄位它必須開立的欄位清單,而製造業隨著他們的生產組織、生產批量、生產產品的不同,其管理需求是不盡相同的。一般ERP軟體產品將製造業企業分為離散製造業和流程工業兩類。又將離散製造分為單件生產、多品種小批量生產、大批量流水生產和大規模定制等四種類型,以及上述類型的混合製造模式。根據客戶定單介入生產過程的不同又分為按庫存生產、按定單裝配、按定單生產和按定單設計的管理模式。比較全面的ERP產品他們通過不同功能的配置可以滿足上述不同需求。但一個ERP產品要想把上述各種各樣的需求都包含在產品裡,那麼這個產品就是一個怪物,譬如我們還是以物料的屬性為例,有些物料的屬性是可以窮舉的,譬如成衣生產的規格;而有一些屬性是無法窮舉的,譬如布匹染廠的,布匹顏色、尺寸大小。所以,ERP產品有強烈的專業性,而對這一點認識和客戶化處理決定企業ERP實施的成敗,所以要導入一個好的成功地ERP管理軟體,必須和企業流程、企業產業特性進行徹底地了解與討論,整理出目前與未來要分析管理的品名欄位,才是一個導入與開發ERP的起始點。
網智數位-軟體開發,專門針對客戶進行量身設計的客製化軟體,已有多年經驗,也在不同產業領域都有實作成功案例。
(作者其他參考文章)
MPS主生產計畫專文介紹(一)
MRPⅡ/ERP 能力需求計畫原理
庫存管理-概念與釐清
庫存管理探討-VMI
真正的庫存量形成探討
庫存管理的中樞控管法則(上)
庫存管理的中樞控管法則(下)
庫存目標6大範疇(程式開發、程式設計、軟體開發、系統開發)
BOM表管理與設定﹣輔料是否需輸入BOM
何謂 進銷存、ERP、WMS?三者差異性【軟體開發、軟件開發、程式設計】
ERP 產品成本管理與計算
庫存量正確性衡量法則
粗能力需求計畫(RCCP) - 專文介紹
如何利用軟體來協助企業銷售統計和分析
開發進銷存、ERP、PDM,物料欄位收集與建立重要性(ERP開發、軟體開發、進銷存)
ERP 各種計劃階段的差異
ERP 系統的淺談與優勢
ERP 系統在中小企業如何有效利用條碼與QRCode
[ ERP/MRP 系統 ] - 專案導入深入剖析
ERP 導入的投資報酬評估(ERP客製化、進銷存軟體)
ERP 與 CRM 整合對企業的重要性(軟體開發、ERP客製化)
ERP思維突破:啟動企業智能革命,引領未來行銷新浪潮
AI時代的ERP:釋放企業潛能的新革命
一直突破開發技術、累積各種產業知識,而且在出版業、室內設計裝潢業、製造業、機電顧問、貿易、地板、窗簾、窗材、拉門、布料業的商業管理軟體投入有特別的領域知識、也在圖控軟體(圖控軟件)、機械手臂、 Android APP 、iPhone APP、3D列印 開發一直突破再創新,我們也堅持相信好的軟體可以協助企業,不管在管理營運角度、商品創新、決策分析等都絕對是不可缺少的關鍵因素,如果客戶您有任何軟體開發、程式開發委外需求,請聯繫我們讓我們協助您一起討論如何開發一個好的軟體來協助您。
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
2017年8月31日 星期四
軟體對企業的價值(軟體開發、軟件開發、客制化軟體)
例如,其中一個客戶工業設備空調大廠原本在自有的產品,具有一定的市場競爭性,但客戶董事長,認為如果可以透過軟體來提升使用設備的效益,所以再次委託我們開發軟體,來偵測使用設備的用電量趨勢圖、溫度的變化、散熱效果等,來產生各種圖表、趨勢圖,給客戶不止使用硬體設備,還可以因為使用硬體設備,透過軟體來增加附加價值,給客戶建議用電量使用狀況,而且可以透過軟體管理界面來管理大量的設備,例如批次關閉設備、開啟設備、設定警示音效,當達到某個電量數據、溫度數據,可以發出警報。
上面我提客戶只是近來一個案例,這個客戶董事長非常有前瞻性思維,他把軟體直接附贈給購買設備的終端客戶,讓原本已經具有競爭性產品設備、更因為軟體的價值,來建立與競爭同業更大的產品優勢,其他競爭廠商還幾乎停留在設備跟價格定價的商業手法。
(其他參考文章)
MPS主生產計畫專文介紹(一)
MRPⅡ/ERP 能力需求計畫原理
庫存管理-概念與釐清
庫存管理探討-VMI
真正的庫存量形成探討
庫存管理的中樞控管法則(上)
庫存管理的中樞控管法則(下)
庫存目標6大範疇(程式開發、程式設計、軟體開發、系統開發)
BOM表管理與設定﹣輔料是否需輸入BOM
何謂 進銷存、ERP、WMS?三者差異性【軟體開發、軟件開發、程式設計】
ERP 產品成本管理與計算
庫存量正確性衡量法則
粗能力需求計畫(RCCP) - 專文介紹
如何利用軟體來協助企業銷售統計和分析
開發進銷存、ERP、PDM,物料欄位收集與建立重要性(ERP開發、軟體開發、進銷存)
ERP 各種計劃階段的差異
ERP 系統的淺談與優勢
[ ERP/MRP 系統 ] - 專案導入深入剖析
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
2017年8月15日 星期二
請修單管理系統-成大斗六分院(軟體開發、軟件開發、客製化軟體)
今年7月份我們協助我們的客戶,開發成大醫院的庶務管理系統與請修單管理系統,來協助每天的事物修繕記錄、醫院器材的維修管理、人事管理、異常週報記錄管理系統、排班系統、未來客戶也預計繼續擴充其他的醫院分院,來達成資料管理、維修異常統計、工作人員每天工作記錄安排、統計分析圖表。
我們部分軟體的功能畫面如下
填寫請修單查詢頁面
新增請修單功能
工作人員日誌記錄功能
我們開發的功能頁面都可以輕易匯出Excel / Word 格式
上面我只列出很少部分的客戶需求頁面,我們的優勢就是從無到有的量身客製化軟體開發,也會在跟客戶需求分析階段提供我們多年的開發經驗,跟客戶互相討論來產出一個對客戶有幫助、提升效益與效率的管理系統。
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
2017年7月25日 星期二
(ERP)產品成本計算系統(軟體開發、軟件開發、客製化軟體)
今年7月份由一家多年在越南設廠的文具用品的台商,委外我量身定做開發屬於他們的ERP系統,該廠商在未委外給我開發軟體時,也在其他知名的套裝軟體有多年的使用經驗,但因為市面上的套裝軟體事實上無法真正的負荷他們的流程以及產品與用料成本計價方式,所以透過 Skype 與我洽談很久(談了2個月),確定我們開發團隊可以了解他們目前工廠遇到的問題就正式放心交個我進行開發設計了。
不過難度比我想象的還複雜,不是一般BOM表可以用來克服成本計算,所有要分析他們所有會產生成本的各種因素,如材料、人力、耗材、製程,下面系統畫面是一個部分使用者操作畫面,可以用來自動計算單一個產品的所有影響成本的統計計算,未來他們就只要填寫報價單,轉正式訂單,系統就會把複雜的成本計算自動算好,帶入報價與訂單系統。
一個好的軟體系統,可以有效提升企業與工廠內部管理,讓企業專注於客戶接單、產品研發、而流程整合與數據分析就交給好的軟體系統。
(其他參考文章)
MPS主生產計畫專文介紹(一)
MRPⅡ/ERP 能力需求計畫原理
庫存管理-概念與釐清
庫存管理探討-VMI
真正的庫存量形成探討
庫存管理的中樞控管法則(上)
庫存管理的中樞控管法則(下)
庫存目標6大範疇(程式開發、程式設計、軟體開發、系統開發)
BOM表管理與設定﹣輔料是否需輸入BOM
何謂 進銷存、ERP、WMS?三者差異性【軟體開發、軟件開發、程式設計】
ERP 產品成本管理與計算
庫存量正確性衡量法則
粗能力需求計畫(RCCP) - 專文介紹
如何利用軟體來協助企業銷售統計和分析
開發進銷存、ERP、PDM,物料欄位收集與建立重要性(ERP開發、軟體開發、進銷存)
ERP 各種計劃階段的差異
ERP 系統的淺談與優勢
[ ERP/MRP 系統 ] - 專案導入深入剖析
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
紡織業機器設備 Arduino 軟體開發、圖控軟體自動化控制
今天我跟公司的研發顧問前往從事多年紡織業的老闆跟協力廠商老闆談如何利用 Arduino 搭配機械手臂的軟體開發,來協助紡織業的生產效率提高與人力成本降低。
在合作對談中硬體整合廠商的研發經理也已經在工研院有多年的硬體驅動開發經驗、而我們網智數位-開發團隊也在 Arduino 軟體開發(台灣第一本Arduino 開發書籍,也是由我們開發團隊出版多本書籍)與控制、機械手臂、圖控軟體(皆完全量身定做從無開到有發出的圖控軟體產品,目前許多領導廠商都委託我們進行開發)皆有多年的成功案例,開發團隊也跟工研院有多年的影像辨識、自動化控制、PLC控制都有合作。
而網智數位-軟體開發團隊的優勢,就是有在商業軟體(ERP、進銷存、MRP、MES、CRM)也有長期涉獵、再結合工業硬體控制經驗,我們可以完全的在商業流程、工廠製程完全地跟客戶討論與建議,如何真正的發揮好的硬體與軟應用的價值。
我們開發團隊顧問研發的 Arduino 機械手臂在南港展覽的影片介紹
網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen