New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

epics-tca

Package Overview
Dependencies
Maintainers
1
Versions
62
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

epics-tca

TypeScript realization of EPICS Channel Acceess Client Protocol

latest
npmnpm
Version
1.1.33
Version published
Weekly downloads
80
81.82%
Maintainers
1
Weekly downloads
 
Created
Source

TypeScript Realization of EPICS Channel Access Client Liberary

  • TypeScript Realization of EPICS Channel Access Client Liberary

About

This is the TypeScript version EPICS Channale Acceess (CA) client library. It provides a TypeScript/JavaScript interface for an EPICS CA client communicating with CA servers.

This library complies the CA protocol specifications.

Install

In your TypeScript/JavaScript project, run

npm install epics-tca

Usage of Channel Access

Get

Create a .ts file (e.g. simpleGet.ts) with following contents:

import { Context } from "epics-tca";
async function simpleGet(name: string) {
    let channel = await context.createChannel(name);
    return await channel?.get();
}

let context = new Context();
context.initialize().then(() => {
    simpleGet("FE:Scope_1:RMS2").then((data: any) => {
        console.log("FE:Scope_1:RMS2", data.data);
        context.destroyHard();
    });
});

Run the transpiled simpleGet.js file, you will get the following result:

$ node simpleGet.js 
FE:Scope_1:RMS2 [ 2.2934632737106067 ]

Put

Create a .ts file (e.g. simplePut.ts) with following contents:

import { Context } from "epics-tca";
async function simplePut(name: string, value: number) {
    let channel = await context.createChannel(name);
    const value0 = await channel?.get();
    console.log("Before:", name, value0?.data);
    await channel?.put([value]);
    return await channel?.get();
}

let context = new Context();
context.initialize().then(() => {
    simplePut("val1", 9527).then((data: any) => {
        console.log("After: ", "val1", data.data);
        context.terminate();
    });
});

Run the transpiled simplePut.js file, you will get the following result:

$ node simplePut.js 
Before: val1 [ 2 ]
After:  val1 [ 9527 ]

Monitor

Create a .ts file (e.g. simpleMonitor.ts) with following contents:

import { Context } from "epics-tca";

async function tcaMonitor(name: string) {
    let channel = await context.createChannel(name);
    let monitor = await channel?.createMonitor(monitorListener);
    await monitor?.subscribe();
}
function monitorListener(monitor: ChannelMonitor) {
    console.log(monitor.name, ":", monitor.data.data);
}

let context = new Context();
context.initialize().then(() => {
    tcaMonitor("FE:Scope_1:RMS2");
});
setTimeout(() => {
    console.log("Terminate program");
    context.terminate();
}, 5 * 1000)

Run the transpiled simpleMonitor.js file, you will get the following result:

$ node simpleMonitor.js
FE:Scope_1:RMS2 : [ 2.296598922566252 ]
FE:Scope_1:RMS2 : [ 2.2929398313489786 ]
FE:Scope_1:RMS2 : [ 2.299754072515923 ]
FE:Scope_1:RMS2 : [ 2.298171626156998 ]
Terminate program

Usage of PV Access

Performance

Benefited from the asynchronous and event driven design of Node.js, the EPICS TCA can create EPICS channels efficiently. Below is the time used to create a batch of channels:

Number of PVsTime [seconds]
10000.104
20000.184
50000.334
100000.603
150000.728
200000.923
250001.318
300001.553
350002.032
400002.432
450002.748
500003.082
600003.727
800005.583
1000009.095

Each channel updates once every second. During the test, after the channels are created, the test program monitors the updates. For 100000 channels, the memory usage is about 450 MB when they are monitored, and the CPU usage is about 50% on a 2.3 GHz Intel Core i9-9880H processor with MacOS 12.4.

Keywords

EPICS

FAQs

Package last updated on 22 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts