---
# System prepended metadata

title: FOCAS學習筆記
tags: [工作]

---

# FOCAS學習筆記

##  範例
:::    success
範例：用於取得刀具狀態。
:::


``` csharp
using System;
using System.Runtime.InteropServices;

public class FocasToolStatus
{
    // 定義 FOCAS 函數對應的 C# 封裝

    [DllImport("Fwlib32.dll")] // 請確保引用了正確的 FOCAS 库文件
    public static extern short cnc_rdtlstatus(IntPtr handle, short type, short[] status);

    // 主函數
    public static void Main(string[] args)
    {
        short[] toolStatus = new short[10]; // 設置用於保存刀具狀態的數組，這裡假設最多有 10 把刀具

        // 建立與 CNC 控制器的連接
        IntPtr handle = FocasFunctions.cnc_allclibhndl3(endPoint.Address.ToString(), endPoint.Port, 10); 
        // 請使用正確的 CNC 控制器的 IP 地址和端口號建立連接

        short ret = cnc_rdtlstatus(handle, 0, toolStatus); // 讀取刀具狀態，type = 0 表示讀取所有刀具狀態

        if (ret == FocasConstants.EW_OK)
        {
            // 成功讀取刀具狀態
            for (int i = 0; i < toolStatus.Length; i++)
            {
                Console.WriteLine($"刀具{i + 1}狀態：{(toolStatus[i] == 1 ? "在位" : "不在位")}");
            }
        }
        else
        {
            // 讀取失敗，請檢查連接和其他問題
            Console.WriteLine($"無法讀取刀具狀態。錯誤碼：{ret}");
        }

        // 關閉與 CNC 控制器的連接
        // 這裡添加相關代碼
    }
}

// FOCAS 相關常量定義
public static class FocasConstants
{
    public const short EW_OK = 0;
    // 在這裡添加其他常量
}

```

## 常用讀取數據函數



| 物件         | 函數           | 描述                                    | 注意                                                       |
| ------------ | -------------- | --------------------------------------- | ---------------------------------------------------------- |
| 軸位置       | cnc_rdpower    | 用於讀取各個軸的當前位置。              | 通常用於數控車床或者加工中心。                             |
| 刀具狀態     | cnc_rdtlstatus | 用於讀取刀具的在位狀態。                | 通常用於檢查刀具是否放置在刀庫中。                         |
|刀具磨損|cnc_rdtofs|刀具磨損的偏移值|無|
| 軸速度       | cnc_actspeed   | 用於讀取各個軸的當前運行速度。          | 通常用於監控加工中的軸速度。                               |
| 加工程序狀態 | cnc_statinfo   | 用於讀取加工程序的運行狀態。            | 包括加工模式、運行狀態、系統報警等信息。                   |
| 加工計數器   | cnc_rdmeter    | 用於讀取加工計數器的數值。              | 通常用於監控加工過程中的計數器，如加工時間、加工零件數等。 |
| 系統報警     | cnc_alarm      | 用於讀取系統報警信息。                  | 可以獲取當前的系統報警代碼和報警信息。                     |
| 工件坐標系統 | cnc_rdposition | 用於讀取工件坐標系統（WCS）的當前位置。 | 無                                                         |
| 程序計數器   | cnc_rdprogdir  | 用於讀取程序計數器的數值。              | 通常用於獲取當前加工程序的編號。                           |
