# Phần mềm CAD, CAM, CNC > Phần mềm CNC control >  Hiển thị toàn bộ trạng thái In/Out trong Mach3

## giaiphapcnc

Trong trường hợp card của các bác có nhiều cổng In/Out và muốn kiểm tra trạng thái thì màn hình Mach3 không đáp ứng được. Giải pháp để hiển thị toàn bộ In/Out cho Mach3 là sử dụng thêm UserLED. Để thực hiện việc này có thể viết Brain hoặc Plugin, Macro. Dưới đây là giải pháp sử dụng macropump để hiển thị thêm các trạng thái In/Out  Input: từ OEMTrigger 1-15, OUTPUT: 7-20, Charge Pump, Charge Pump2, và Current Hi/Low. Màn hình Test sử dụng màn hình của 1024TestIO của Scott.

Macropump trong Mach3 được quét với tần số 10Hz (100ms sẽ được quét 1 lần). Tần số này bằng tần số quét Brain và PluginUpdate. 

Dưới đây là source code Macro và màn hình và file đính kèm. Cần Copy macro vào thư mục Macro với profile đang hoạt động (chẳng hạn C:\Mach3\macros\Mach3Mill) và Enable Macropump để chương trình hoạt động.

Màn hình 1024TestIO copy vào thư mục Mach3. Sau đó chọn: View -> Load Screen -> Chọn 1024TestIO. Sẽ thấy toàn bộ Input/Output ở màn tab Diagnostics


Enable Macropump


Màn hình Diagnostics




```
'-----------------------------------------------------------------
'Hien thi trang thai In/Out trong Mach3
'Su dung Macropump: tan so quet 10Hz (100ms se quet 1 lan)
'man hinh Test su dung TestIO cua Scott
'Dev: www.tntmech.com
'-----------------------------------------------------------------
Sub Main
	'Phan Input: OEMTRIG1 -> OEMTRIG15
	Call SetUserLEDTNT (1301,IsActive(OEMTRIG1))
	Call SetUserLEDTNT (1301,IsActive(OEMTRIG1))
	Call SetUserLEDTNT (1302,IsActive(OEMTRIG2))
	Call SetUserLEDTNT (1303,IsActive(OEMTRIG3))
	Call SetUserLEDTNT (1304,IsActive(OEMTRIG4))
	Call SetUserLEDTNT (1305,IsActive(OEMTRIG5))
	Call SetUserLEDTNT (1306,IsActive(OEMTRIG6))
	Call SetUserLEDTNT (1307,IsActive(OEMTRIG7))
	Call SetUserLEDTNT (1308,IsActive(OEMTRIG8))
	Call SetUserLEDTNT (1309,IsActive(OEMTRIG9))
	Call SetUserLEDTNT (1310,IsActive(OEMTRIG10))
	Call SetUserLEDTNT (1311,IsActive(OEMTRIG11))
	Call SetUserLEDTNT (1312,IsActive(OEMTRIG12))
	Call SetUserLEDTNT (1313,IsActive(OEMTRIG13))
	Call SetUserLEDTNT (1314,IsActive(OEMTRIG14))
	Call SetUserLEDTNT (1315,IsActive(OEMTRIG15))

	
	
	'Phan Output: OUTPUT7-> OUTPUT20

	Call SetUserLEDTNT (1316,IsOutputActive(OUTPUT7))
	Call SetUserLEDTNT (1317,IsOutputActive(OUTPUT8))
	Call SetUserLEDTNT (1318,IsOutputActive(OUTPUT9))
	Call SetUserLEDTNT (1319,IsOutputActive(OUTPUT10))
	Call SetUserLEDTNT (1320,IsOutputActive(OUTPUT11))
	Call SetUserLEDTNT (1321,IsOutputActive(OUTPUT12))
	Call SetUserLEDTNT (1322,IsOutputActive(OUTPUT13))
	Call SetUserLEDTNT (1323,IsOutputActive(OUTPUT14))
	Call SetUserLEDTNT (1324,IsOutputActive(OUTPUT15))
	Call SetUserLEDTNT (1325,IsOutputActive(OUTPUT16))
	Call SetUserLEDTNT (1326,IsOutputActive(OUTPUT17))
	Call SetUserLEDTNT (1327,IsOutputActive(OUTPUT18))
	Call SetUserLEDTNT (1328,IsOutputActive(OUTPUT19))
	Call SetUserLEDTNT (1329,IsOutputActive(OUTPUT20))
	
	'CHARGE
	'CHARGE2
	'CURRENTHILOW
	Call SetUserLEDTNT (1330,IsOutputActive(CHARGE))
	Call SetUserLEDTNT (1331,IsOutputActive(CHARGE2))
	Call SetUserLEDTNT (1332,IsOutputActive(CURRENTHILOW))
	
End Sub



Public Sub SetUserLEDTNT (ByVal LEDCtrl As Integer,  Expression As Boolean)
	If (Expression) Then
		SetUserLED(LEDCtrl,1)
	Else
		SetUserLED(LEDCtrl,0)
	End If
End Sub
```

*Download file*

IOMach3.zip

----------

anhcos, cuong, haignition, Mr.L, ppgas, tcm, Tuanlm

----------

