放荡的巨乳空姐,91小宝寻花一区二区三区,欧美视频自拍偷拍,我被添得好爽在线视频欧美,国产一级在线看,一级毛片毛片,av解说在线观看

您現(xiàn)在的位置:智能制造網(wǎng)>技術(shù)中心>Kvaser | 如何使用Excel發(fā)送和接收CAN報(bào)文數(shù)據(jù)

直播推薦

更多>

企業(yè)動(dòng)態(tài)

更多>

推薦展會(huì)

更多>

Kvaser | 如何使用Excel發(fā)送和接收CAN報(bào)文數(shù)據(jù)

2025年06月16日 07:13:44人氣:8來源:廣州智維電子科技有限公司

從1980年代,Kvaser就開始CAN產(chǎn)品的研發(fā),在相關(guān)產(chǎn)品開發(fā)領(lǐng)域有近40多年的經(jīng)驗(yàn),對(duì)CAN和相關(guān)總線技術(shù)有著非常深入的研究。我們將分享一些有趣的發(fā)現(xiàn)和一些特定情況的技術(shù)處理,歡迎關(guān)注!


所有人的電腦上都有Microsoft Office,平時(shí)我們用它列表和計(jì)算,除此之外,它還可以被用來進(jìn)行CAN總線數(shù)據(jù)收發(fā)的工作,進(jìn)而輔助你進(jìn)行其他工作。本文就分享如何巧用Excel進(jìn)行該操作。

我們可以利用Windows電腦上的Microsoft Office Excel進(jìn)行如下操作:


?從工作表中的任意單元格向CAN總線發(fā)送數(shù)據(jù)

?以工作表的任意單元格從CAN總線接收數(shù)據(jù)


Kvaser CANlib可用于Visual Basic for Applications (VBA)。此多功能庫支持Kvaser的所有適配器,并輔助你編寫高級(jí)和創(chuàng)新的解決方案。

有這么多其他語言可以用,為什么還要使用VBA呢?

首先,如果你平時(shí)使用Microsoft Office,那么使用它會(huì)更容易。Excel使用廣泛,通過VBA,你可應(yīng)用Excel的所有功能,以及你自己的創(chuàng)意和創(chuàng)新想法。另外,使用Excel不會(huì)產(chǎn)生額外成本,也更方便與他人或其他公司分享數(shù)據(jù)。

本文我們會(huì)簡(jiǎn)要介紹如何在Microsoft Excel中使用CANlib、VBA向CAN總線發(fā)送/接收數(shù)據(jù)。

應(yīng)用此方法,你需要:


根據(jù)本文的步驟,你需要使用Kvaser CANlib和Excel VBA。任意版本的Microsoft Office都可以,但是Office 2010,因?yàn)閂BA 7是在2010年推出的。64位和32位Office均可使用。本文中,使用的是Office 365和Excel(版本2202 Build 16.0.14931.20116)64位。


你還需要安裝“用于Windows的Kvaser驅(qū)動(dòng)程序”。請(qǐng)聯(lián)系廣州智維版本CANlib并依照其步驟進(jìn)行安裝。如果你需要進(jìn)一步使用CANlib,我們建議下載Kvaser CANlib SDK。


VBA介紹



VBA(Visual Basic for Applications)是Visual Basic的一種宏語言,是在其桌面應(yīng)用程序中執(zhí)行通用的自動(dòng)化(OLE)任務(wù)的編程語言。主要能用來擴(kuò)展Windows的應(yīng)用程序功能,特別是Microsoft Office軟件。它也可以說是一種應(yīng)用程式視覺化的 Basic 腳本。


VBA是Microsoft編程語言Visual Basic 6的一個(gè)子集,它使用同一編輯器的精簡(jiǎn)版本以及類似的調(diào)試功能。因此,如果你了解VB6,也就能了解VBA的使用方法。Visual Basic是為了簡(jiǎn)化編程而創(chuàng)建的,VBA編程的過程不難,使用它就類似于用英語的語句來告訴電腦該做什么。


Application.ActiveDocument.SaveAs ("New Document Name.docx")

將活動(dòng)文檔另存為 “New Document Name.docx”


需要注意的是,VBA是單線程的,這意味著它將一次執(zhí)行一個(gè)任務(wù)。(請(qǐng)參閱下文“VBA示例”中的“多任務(wù)處理”內(nèi)容)


默認(rèn)情況下,Office不顯示開發(fā)工具”選項(xiàng)卡,你必須通過如下步驟啟用它:


1??從“File文件”選項(xiàng)卡中,選擇“Options選項(xiàng)”打開對(duì)話框。

2??選擇對(duì)話框左側(cè)的“Customize Ribbon自定義功能區(qū)”。

3??在對(duì)話框左側(cè)的“Choose Commands From從中選擇命令”中,選擇“Common Commands常用命令”。

4??在右側(cè)的“Customize the ribbon自定義功能區(qū)”中,從下拉列表中選擇“Main Tab主選項(xiàng)卡”,然后選擇“Developer開發(fā)工具”復(fù)選框。

5??選擇OK。


從“開發(fā)工具”選項(xiàng)卡,你可以打開編輯器并創(chuàng)建按鈕、下拉菜單等?;蛘撸憧梢栽贠ffice應(yīng)用程序中使用快捷鍵:ALT+F11。


如果你還是不了解如何操作,可以在網(wǎng)上進(jìn)行VBA示例搜索,即使需求不相同,你也能從中參考到類似的步驟。


VBA實(shí)例



個(gè)示例將顯示當(dāng)某個(gè)單元出現(xiàn)更改時(shí)如何作出反應(yīng),并將該值發(fā)送到CAN總線。

在VBA編輯器中,雙擊你需要對(duì)其作出反應(yīng)的單元格所在的工作表,然后選擇該工作表的“更改(Change)”步驟。


圖片


每當(dāng)該工作表中發(fā)生更改時(shí),都會(huì)執(zhí)行工作表更改事件,將其縮小到特定的一個(gè)單元格,我使用VBA中的Intersect()函數(shù)。此函數(shù)確定更改的單元格是否與我們指定的單元格“匹配”。為了簡(jiǎn)化此示例,我假設(shè)工作表處于活動(dòng)狀態(tài),并且我們要發(fā)送的值介于0-255之間。有關(guān)canWrite中使用的參數(shù),以及如何從CAN總線接收數(shù)據(jù)的更多信息,請(qǐng)見下一個(gè)示例。

另一個(gè)示例中,我已將一個(gè)記錄文件導(dǎo)入Excel(在此示例中,它是一個(gè).ASC文件)。我這樣做只是為了向CAN總線發(fā)送數(shù)據(jù)。


圖片


當(dāng)然,你的數(shù)據(jù)可以是來自任何地方的,在VBA中打開一個(gè)文件,也可以在Excel中編寫幾個(gè)具體應(yīng)發(fā)送的幀等。


在這里,不會(huì)深入探討CANlib,這個(gè)示例主要是啟發(fā)你可以如何利用VBA和CANlib。在本文,我將演示如何使用Kvaser CANlib從Excel中的任意單元格發(fā)送數(shù)據(jù),以及如何以Excel中的任意單元格接收數(shù)據(jù)。

編碼


CANlib API - 和句柄聲明

Option Explicit 'Force explicit variable declaration so that an undeclared variable generates error.



#If VBA7 Then

Private Declare PtrSafe Sub canInitializeLibrary Lib "CANLIB32.DLL" ()

Private Declare PtrSafe Function canUnloadLibrary Lib "CANLIB32.DLL" () As Long

Private Declare PtrSafe Function canGetNumberOfChannels Lib "CANLIB32.DLL" (ByRef channelCount As Long) As Long

Private Declare PtrSafe Function canGetChannelData Lib "CANLIB32.DLL" (ByVal channel As Long, ByVal item As Long, ByRef buffer As Any, ByVal bufsize As Long) As Long

Private Declare PtrSafe Function canOpenChannel Lib "CANLIB32.DLL" (ByVal handle As Long, ByVal Flags As Long) As LongPtr

Private Declare PtrSafe Function canClose Lib "CANLIB32.DLL" (ByVal handle As LongPtr) As Long

Private Declare PtrSafe Function canBusOn Lib "CANLIB32.DLL" (ByVal handle As LongPtr) As Long

Private Declare PtrSafe Function canBusOff Lib "CANLIB32.DLL" (ByVal handle As LongPtr) As Long

Private Declare PtrSafe Function canSetBusParams Lib "CANLIB32.DLL" (ByVal handle As LongPtr, ByVal freq As Long, ByVal tseg1 As Long, ByVal tseg2 As Long, ByVal sjw As Long, ByVal noSamp As Long, ByVal syncMode As Long) As Long

Private Declare PtrSafe Function canWrite Lib "CANLIB32.DLL" (ByVal handle As LongPtr, ByVal id As Long, ByRef msg As Any, ByVal dlc As Long, ByVal flag As Long) As Long

Private Declare PtrSafe Function canReadWait Lib "CANLIB32.DLL" (ByVal handle As LongPtr, ByRef id As Long, ByRef msg As Any, ByRef dlc As Long, ByRef flag As Long, ByRef time As Long, ByRef timeout As Long) As Long

#Else

Private Declare Sub canInitializeLibrary Lib "CANLIB32.DLL" ()

Private Declare Function canUnloadLibrary Lib "CANLIB32.DLL" () As Long

Private Declare Function canGetNumberOfChannels Lib "CANLIB32.DLL" (ByRef channelCount As Long) As Long

Private Declare Function canGetChannelData Lib "CANLIB32.DLL" (ByVal channel As Long, ByVal item As Long, ByRef buffer As Any, ByVal bufsize As Long) As Long

Private Declare Function canOpenChannel Lib "CANLIB32.DLL" (ByVal handle As Long, ByVal Flags As Long) As Long

Private Declare Function canClose Lib "CANLIB32.DLL" (ByVal handle As Long) As Long

Private Declare Function canBusOn Lib "CANLIB32.DLL" (ByVal handle As Long) As Long

Private Declare Function canBusOff Lib "CANLIB32.DLL" (ByVal handle As Long) As Long

Private Declare Function canSetBusParams Lib "CANLIB32.DLL" (ByVal handle As Long, ByVal freq As Long, ByVal tseg1 As Long, ByVal tseg2 As Long, ByVal sjw As Long, ByVal noSamp As Long, ByVal syncMode As Long) As Long

Private Declare Function canWrite Lib "CANLIB32.DLL" (ByVal handle As Long, ByVal id As Long, ByRef msg As Any, ByVal dlc As Long, ByVal flag As Long) As Long

Private Declare Function canReadWait Lib "CANLIB32.DLL" (ByVal handle As Long, ByRef id As Long, ByRef msg As Any, ByRef dlc As Long, ByRef flag As Long, ByRef time As Long, ByRef timeout As Long) As Long

#End If


'Constant declarations

Private Const canOK = 0

Private Const canOPEN_ACCEPT_VIRTUAL = &H20

Private Const canBITRATE_250K = -3

Private Const canCHANNELDATA_CARD_SERIAL_NO = 7



'Declaration of CAN handles

#If VBA7 Then

Private hnd0, hnd1 As LongPtr

#Else

Private hnd0, hnd1 As Long

#End If


這些聲明是必要的,以便指定哪些dll調(diào)用可用,并指出此dll的位置。通過Kvaser的安裝程序安裝時(shí),CANlib32.dll位于系統(tǒng)路徑中。這就是說你不必指定它的具體位置。

[ Public | Private ] Declare Sub name Lib “l(fā)ibname” [ ( [ arglist ] ) ]

[ Public | Private ] Declare Function name Lib “l(fā)ibname” [ ( [ arglist ] ) ] [ As type ]

使用Private表明,只有在聲明它的模塊中才能訪問它。

Kvaser CANlib SDK目前不包含任何VB或VBA聲明,因此你必須根據(jù)需要編寫這些聲明。


有任何問題,你可以聯(lián)系我們的技術(shù)支持人員,本文結(jié)尾處提供了。

調(diào)用 CANlib API


初始化CANlib并獲取可用通道數(shù)

Sub CANLib_Start()

Dim chCount, stat, i As Long

Dim buffer As String

Dim myArr(32) As Byte

Dim ws As Worksheet


canInitializeLibrary

stat = canGetNumberOfChannels(chCount)

If stat <> canOK Then GoTo ErrorHandler


在使用任何其他函數(shù)之前,必須先調(diào)用canInitializeLibrary函數(shù)。它將初始化驅(qū)動(dòng)程序。

canGetNumberOfChannels, 此函數(shù)將返回電腦中可用CAN通道的數(shù)量。虛擬通道包括在此通道數(shù)中。


準(zhǔn)備工作表以讀取一些設(shè)備信息

Sheets.Add(Before:=Sheets(1)).name = "Device info" ' Add a sheet called "Device info" to the first position


Range("A1").Value = "Nof channels"

Range("B1").Value = chCount


在這里,我們給個(gè)位置添加一個(gè)新的工作表,并在該工作表的單元格B1中寫入可用通道數(shù)。


讀取每個(gè)可用通道的一些設(shè)備信息

For i = 0 To chCount - 1

stat = canGetChannelData(i, canCHANNELDATA_CARD_SERIAL_NO, myArr(0), 32)

buffer = StrConv(myArr(), vbUnicode)

If buffer <> Empty Then

Cells(i + 2, 1).Value = "Serial"

Cells(i + 2, 2).Value = buffer

End If

Next i


在這里,我們查看每個(gè)可用的通道,并詢問設(shè)備的序列號(hào),并且我們將其寫入每個(gè)通道的第二列中的新行(即B)。


打開通道,設(shè)置參數(shù)并啟動(dòng)總線

hnd0 = canOpenChannel(0, canOPEN_ACCEPT_VIRTUAL)

hnd1 = canOpenChannel(1, canOPEN_ACCEPT_VIRTUAL)

stat = canSetBusParams(hnd0, canBITRATE_250K, 0, 0, 0, 0, 0)

If stat <> canOK Then GoTo ErrorHandler

stat = canSetBusParams(hnd1, canBITRATE_250K, 0, 0, 0, 0, 0)

If stat <> canOK Then GoTo ErrorHandler


stat = canBusOn(hnd0)

If stat <> canOK Then GoTo ErrorHandler

stat = canBusOn(hnd1)

If stat <> canOK Then GoTo ErrorHandler


在這里,我們打開個(gè)和第二個(gè)通道,以獲得所有其他調(diào)用所需的句柄。我們繼續(xù)準(zhǔn)備這兩個(gè)打開的通道,為它們?cè)O(shè)置相同的比特率。


為讀取數(shù)據(jù)準(zhǔn)備工作表

DeleteSheet ("Read data")

Set ws = Sheets.Add()

ws.name = "Read data"

ws.Cells(1, 1).Value = "ID"

ws.Cells(1, 2).Value = "Data1"

ws.Cells(1, 3).Value = "Data2"

ws.Cells(1, 4).Value = "Data3"

ws.Cells(1, 5).Value = "Data4"

ws.Cells(1, 6).Value = "Data5"

ws.Cells(1, 7).Value = "Data6"

ws.Cells(1, 8).Value = "Data7"

ws.Cells(1, 9).Value = "Data8"

這里我們準(zhǔn)備一個(gè)工作表來存儲(chǔ)讀取的數(shù)據(jù)。我首先刪除“讀取數(shù)據(jù)(Read data)”表,如果它已經(jīng)存在。然后我創(chuàng)建此工作表并命名,同時(shí)添加一些標(biāo)題注釋,以便更好地理解輸出內(nèi)容。


發(fā)送、接收和填充單元格

Sub CANlib_Traffic()

Dim tb As ListObject

Dim iCol, iRow As Integer

Dim sData(1 To 8), sCol As String

Dim bDataTx(1 To 8) As Byte

Dim bDataRx(1 To 8) As Byte

Dim stat, lID, lDlc, lFlags, lTime As Long



Worksheets("Imported ASC").Activate

Set tb = ActiveSheet.ListObjects("TestLog")


For iRow = 1 To tb.Range.Rows.Count

lDlc = tb.DataBodyRange.Cells(iRow, tb.ListColumns("DLC").Index) ' Get how many data bytes

For iCol = 1 To lDlc

sCol = "Data" + Trim(Str(iCol)) 'Create the headline to read from

sData(iCol) = tb.DataBodyRange.Cells(iRow, tb.ListColumns(sCol).Index)

bDataTx(iCol) = CByte("&H" & sData(iCol)) ' Convert the Hex value to decimal

Next iCol

' Send the byte stream of CAN data on the first channel

stat = canWrite(hnd0, CLng(iRow), bDataTx(1), lDlc, 0)

DoEvents

' Read out the received data on the second channel

stat = canReadWait(hnd1, lID, bDataRx(1), lDlc, lFlags, lTime, 50)

If stat = canOK Then

With Worksheets("Read data") ' Populate cells in Excel with read CAN data

.Cells(lID + 1, 1).Value = lID

' .Cells(lID + 1, 2).Value = CStr(Hex(bDataRx(1))) ' Use this if value should be in hexadecimal

.Cells(lID + 1, 2).Value = bDataRx(1)

.Cells(lID + 1, 3).Value = bDataRx(2)

.Cells(lID + 1, 4).Value = bDataRx(3)

.Cells(lID + 1, 5).Value = bDataRx(4)

.Cells(lID + 1, 6).Value = bDataRx(5)

.Cells(lID + 1, 7).Value = bDataRx(6)

.Cells(lID + 1, 8).Value = bDataRx(7)

.Cells(lID + 1, 9).Value = bDataRx(8)

End With

End If

Next iRow


MsgBox "Traffic done!"

End Sub


首先確定要讀取的工作表已激活。在我的示例中,我將導(dǎo)入數(shù)據(jù)的工作表命名為TestLog,并將其設(shè)置為L(zhǎng)istObject變量。我這樣做是為了在獲取要發(fā)送的值時(shí)更容易循環(huán)操作,這樣我可以使用工作表的標(biāo)題來指定我正在讀取的列。個(gè)循環(huán)設(shè)置為讀取導(dǎo)入數(shù)據(jù)的整個(gè)范圍。我讀取數(shù)據(jù)長(zhǎng)度代碼(dlc)值,以了解還要讀取和稍后發(fā)送的字節(jié)數(shù)。第二個(gè)循環(huán)迭代數(shù)據(jù)字節(jié),將它們從文本格式的十六進(jìn)制轉(zhuǎn)換為十進(jìn)制值,并將值存儲(chǔ)在字節(jié)數(shù)組中。


然后,通過調(diào)用CANlib函數(shù)canWrite,將CAN數(shù)據(jù)的字節(jié)數(shù)組與報(bào)文id(在本例中為行號(hào))和數(shù)據(jù)長(zhǎng)度代碼(dlc)一起發(fā)送。


DoEvents可以更輕松地停止正在運(yùn)行的宏。DoEvents函數(shù)允許中斷執(zhí)行代碼,并允許計(jì)算機(jī)處理器同時(shí)運(yùn)行其他任務(wù)。使用DoEvents會(huì)延長(zhǎng)執(zhí)行時(shí)間,但另一方面,它也會(huì)讓宏停止運(yùn)行。


canReadWait從接收緩沖區(qū)讀取報(bào)文。如果沒有可用的報(bào)文,則該函數(shù)將等待報(bào)文到達(dá)或超時(shí)。


最后,用該讀取值填充之前創(chuàng)建的“讀取數(shù)據(jù)”工作表并使用報(bào)文id指定單元格行。通過在寫入單元格時(shí)使用命名工作表,我不必激活該工作表(Worksheets(“Read data”). Cells (Row, Column).Value),同時(shí)能保持保存導(dǎo)入數(shù)據(jù)的工作表處于活動(dòng)狀態(tài)。


操作后清理

Sub CANLib_Stop()

canBusOff (hnd0)

canBusOff (hnd1)

canUnloadLibrary

MsgBox "CANlib is unloaded!"

End Sub


canBusOff把指定句柄關(guān)閉。如果同一通道上沒有其他句柄處于活動(dòng)狀態(tài),則也將把此通道關(guān)閉。canUnloadLibrary將釋放分配的內(nèi)存,卸載已加載的DLL canlib32.,并取消初始化數(shù)據(jù)結(jié)構(gòu)。

結(jié)果



本示例的結(jié)果如下圖所示:


圖片


如果選擇將輸出數(shù)據(jù)格式化為十六進(jìn)制,這樣更便于比較,然后將單元格格式化為文本: ws.Columns(“A:I”).NumberFormat = “@”,當(dāng)將值放入這些單元格時(shí),需要進(jìn)行如下轉(zhuǎn)換:Cells(col, row).Value = CStr(Hex(MyDecValue))。


但在本次操作中,為了讓后續(xù)分析更方便,我選擇了十進(jìn)制。(也可以使用十六進(jìn)制值,但有時(shí)需要進(jìn)行轉(zhuǎn)換,因?yàn)閂BA和Excel中的圖表對(duì)象需要其值為十進(jìn)制格式。)


可使用Excel圖表可視化數(shù)據(jù),例如:


圖片


圖表可以在VBA代碼中生成,也可以在以后使用Excel的工具欄生成。

32位與64位Microsoft Office



兩個(gè)Office版本都可用,但VBA版本7中添加了一些新的64位功能。


圖片


VBA中除數(shù)據(jù)類型Byte外,沒有無符號(hào)數(shù)據(jù)類型。但這并不是不可行 – 可以在VBA中讀取無符號(hào)值,例如本例介紹了如何對(duì)2147483647以上的值使用雙精度類型。


Private Const MAX_UINT32 = 4294967296#

Private Const MAX_INT32 = 2147483647

Function LongToUnsigned(ByVal Value As Long) As Double

If Value < 0 Then

LongToUnsigned = Value + MAX_UINT32

Else

LongToUnsigned = Value

End If

End Function

Function UnsignedToLong(ByVal Value As Double) As Long

If Value < 0 Or Value >= MAX_UINT32 Then Error 6

If Value <= MAX_INT32 Then

UnsignedToLong = Value

Else

UnsignedToLong = Value - MAX_UINT32

End If

End Function

多任務(wù)處理



VBA是單線程的,這意味著它將一次執(zhí)行一個(gè)任務(wù)。仍然可以創(chuàng)建一個(gè)線程或使用回調(diào)函數(shù),如CANlib中的kvSetNotifyCallback,但我不建議這樣做。如果關(guān)閉一個(gè)線程并在主線程中等待,則創(chuàng)建一個(gè)線程是可以的,但創(chuàng)建更多線程或嘗試寫入主線程外的單元格,可能會(huì)導(dǎo)致Excel凍結(jié)并關(guān)閉。為了避免麻煩和花費(fèi)額外時(shí)間,建議保持它的簡(jiǎn)單性和主線程。


對(duì)于那些有使用VBA經(jīng)驗(yàn)的用戶,有一些方法可以解決這個(gè)問題,例如從代碼中的循環(huán)中啟動(dòng)一個(gè)新的Excel實(shí)例,并從該新實(shí)例調(diào)用主工作簿中的一個(gè)過程。


我的建議是保持在主線程里。

結(jié)論



在本文中,我們簡(jiǎn)要介紹了如何在Microsoft Excel中使用CANlib和VBA向CAN總線發(fā)送和從CAN總線接收數(shù)據(jù)。希望此示例可讓你了解如何操作可行,并輔助你進(jìn)一步分析數(shù)據(jù)或編寫解決方案。

關(guān)鍵詞:CAN開發(fā)工具RTU
全年征稿/資訊合作 聯(lián)系郵箱:1271141964@qq.com

免責(zé)聲明

  • 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請(qǐng)必須注明智能制造網(wǎng),http://www.decaoba.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
  • 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
  • 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。
  • 如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

<
更多 >

工控網(wǎng)機(jī)器人儀器儀表物聯(lián)網(wǎng)3D打印工業(yè)軟件金屬加工機(jī)械包裝機(jī)械印刷機(jī)械農(nóng)業(yè)機(jī)械食品加工設(shè)備制藥設(shè)備倉儲(chǔ)物流環(huán)保設(shè)備造紙機(jī)械工程機(jī)械紡織機(jī)械化工設(shè)備電子加工設(shè)備水泥設(shè)備海洋水利裝備礦冶設(shè)備新能源設(shè)備服裝機(jī)械印染機(jī)械制鞋機(jī)械玻璃機(jī)械陶瓷設(shè)備橡塑設(shè)備船舶設(shè)備電子元器件電氣設(shè)備


我要投稿
  • 投稿請(qǐng)發(fā)送郵件至:(郵件標(biāo)題請(qǐng)備注“投稿”)1271141964.qq.com
  • 聯(lián)系電話0571-89719789
工業(yè)4.0時(shí)代智能制造領(lǐng)域“互聯(lián)網(wǎng)+”服務(wù)平臺(tái)
智能制造網(wǎng)APP

功能豐富 實(shí)時(shí)交流

智能制造網(wǎng)小程序

訂閱獲取更多服務(wù)

微信公眾號(hào)

關(guān)注我們

抖音

智能制造網(wǎng)

抖音號(hào):gkzhan

打開抖音 搜索頁掃一掃

視頻號(hào)

智能制造網(wǎng)

公眾號(hào):智能制造網(wǎng)

打開微信掃碼關(guān)注視頻號(hào)

快手

智能制造網(wǎng)

快手ID:gkzhan2006

打開快手 掃一掃關(guān)注
意見反饋
關(guān)閉
企業(yè)未開通此功能
詳詢客服 : 0571-87858618