artisan icon indicating copy to clipboard operation
artisan copied to clipboard

Any possibility to work with Tasi TA612C four channel thermometer with USB

Open Mikekkc opened this issue 2 years ago • 3 comments

Expected Behavior

Collect data from Tasi TA612C ( http://www.china-tasi.com/plus/view.php?aid=97 )

Actual Behavior

Construct the roasting curve with channels on BT, ET and third reading like ambient temperature

Steps to Reproduce the Problem

  1. Windows connected
  2. Data not read by Artisan
  3. No curve generated

Specifications

  • Artisan Version: 2.6
  • Artisan Build (number in brackets shown in the about box):
  • Platform (Mac/Windows/Linux + OS version): Windows
  • Connected devices or roasting machine: TA612C and SR800

Please attach your current Artisan settings file (as exported via menu Help >> Save Settings as *.aset) file. currently using Victor86B single channel. Please attach any relevant Artisan *.alog profiles. not available

Note that you need either add a .txt extension or zip the files before uploading. Otherwise you will receive a "Not a supported file type" error on uploading.

Mikekkc avatar Aug 30 '22 07:08 Mikekkc

This device is not supported by Artisan and the team has no resources to add support for it. Please implement the corresponding driver yourself and submit the code as Pull Request for integration.

MAKOMO avatar Aug 30 '22 09:08 MAKOMO

TA系列通讯协议.docx

Here is the communication protocol for the above device. Only Chinese language version.

YuenJay avatar Jan 08 '24 19:01 YuenJay

Here is what I've implemented in Rust for reading temperature data from TA612C, hope that helps https://github.com/chihpingkuo/roastcraft/blob/main/src-tauri/src/devices/ta612c.rs

let request: [u8; 5] = [0xAA, 0x55, 0x01, 0x03, 0x03];
self.stream.write(&request);

let mut response: [u8; 13] = [0; 13];
match self.stream.read(response.as_mut_slice()) {
    Ok(_) => {
        let T1 = u16::from_ne_bytes(response[4..6].try_into().unwrap()) as f32 / 10.0;
        let T2 = u16::from_ne_bytes(response[6..8].try_into().unwrap()) as f32 / 10.0;
        let T3 = u16::from_ne_bytes(response[8..10].try_into().unwrap()) as f32 / 10.0;
        let T4 = u16::from_ne_bytes(response[10..12].try_into().unwrap()) as f32 / 10.0;

chihpingkuo avatar Feb 05 '24 08:02 chihpingkuo