내장 항목은 추가 정보를 제공하고 데이터 조작을 허용하는 상수, 변수, 함수 및 문입니다.
내장 상수는 최대 권장 이름 길이, 플래그 등과 같은 객체 매개변수에 대한 정보를 제공하는 데 사용됩니다. 대부분의 객체 유형에는 특정 객체에 대한 내장 상수를 나열하는 자체 상수 섹션이 있습니다(예: UL_PIN 참고).
다양한 객체 유형에 대해 나열된 상수 외에도 다음과 같은 내장 상수가 정의되어 있습니다.
EAGLE_VERSION | EAGLE 프로그램 버전 번호(int) |
EAGLE_RELEASE | EAGLE 프로그램 릴리즈 번호(int) |
EAGLE_SIGNATURE | EAGLE 프로그램 이름, 버전 및 저작권 정보가 포함된 문자열 |
EAGLE_PATH | EAGLE 실행 파일의 전체 경로를 포함하는 문자열 |
EAGLE_DIR | EAGLE 설치 디렉토리가 포함된 문자열($EAGLEDIR) |
EAGLE_HOME | EAGLE을 시작할 때 사용자의 홈 디렉토리가 포함된 문자열($HOME) |
eagle_epf | 현재 사용되는 eagle.epf의 전체 경로를 포함하는 문자열 |
OS_SIGNATURE | 운영 체제의 서명을 포함하는 문자열(예: Mac..., Windows.. 또는 Linux) |
REAL_EPSILON | 1.0 + REAL_EPSILON != 1.0과 같은 최소 양의 실수 |
REAL_MAX | 가능한 가장 큰 실수 값 |
REAL_MIN | 가능한 가장 작은(양수!) 실수 값입니다. 표시 가능한 가장 작은 숫자는 -REAL_MAX입니다. |
INT_MAX | 가능한 가장 큰 int 값 |
INT_MIN | 가능한 가장 작은 int 값 |
PI | "pi"의 값(3.14..., 실수) |
usage | #usage 지시문의 문자가 포함된 문자열 |
이러한 내장 상수에는 디렉토리 대화상자에 정의된 디렉토리 경로가 포함되어 있으며, 특수 변수($HOME 및 $EAGLEDIR)가 실제 값으로 대체됩니다. 각 경로는 여러 디렉토리로 구성될 수 있으므로 이러한 상수는 각 멤버에 개별 디렉토리가 있는 문자열 배열입니다. 첫 번째 빈 멤버는 경로 끝을 표시합니다.
path_lbr[] Libraries
path_dru[] Design Rules
path_ulp[] User Language Programs
path_scr[] Scripts
path_cam[] CAM Jobs
path_epf[] Projects
이러한 상수를 사용하여 전체 파일 이름을 작성할 때는 다음과 같이 디렉토리 구분 기호를 사용해야 합니다.
string s = path_lbr[0] + '/' + "mylib.lbr";
USE 명령을 통해 현재 사용 중인 라이브러리입니다.
used_libraries[]
내장 변수는 런타임 시 정보를 제공하는 데 사용됩니다.
int argc number of arguments given to the RUN command
string argv[] arguments given to the RUN command (argv[0] is the full ULP file name)
내장 함수는 형식이 지정된 문자열 인쇄, 데이터 배열 정렬 등과 같은 특정 작업을 수행하는 데 사용됩니다.
또한 사용자 고유의 함수를 작성하여 사용자 언어 프로그램을 구성하는 데 사용할 수도 있습니다.
내장 함수는 다음 범주로 그룹화됩니다.
모든 내장 함수의 알파벳순 참조:
abs()
acos()
asin()
atan()
ceil()
cfgget()
cfgset()
clrgroup()
country()
cos()
exit()
exp()
fdlsignature()
filedir()
fileerror()
fileext()
fileglob()
filename()
fileread()
filesetext()
filesize()
filetime()
floor()
frac()
inch2u()
ingroup()
isalnum()
isalpha()
iscntrl()
isdigit()
isgraph()
islower()
isprint()
ispunct()
isspace()
isupper()
isxdigit()
language()
log()
log10()
lookup()
max()
mic2u()
mil2u()
min()
mm2u()
neterror()
netget()
netpost()
palette()
pow()
printf()
round()
setgroup()
setvariant()
sin()
sleep()
sort()
sprintf()
sqrt()
status()
strchr()
strjoin()
strlen()
strlwr()
strrchr()
strrstr()
strsplit()
strstr()
strsub()
strtod()
strtol()
strupr()
strxstr()
system()
t2day()
t2dayofweek()
t2hour()
t2minute()
t2month()
t2second()
t2string()
t2year()
tan()
time()
tolower()
toupper()
trunc()
u2inch()
u2mic()
u2mil()
u2mm()
variant()
xmlattribute()
xmlattributes()
xmlelement()
xmlelements()
xmltags()
xmltext()
문자 함수는 단일 문자를 조작하는 데 사용됩니다.
다음 문자 함수를 사용할 수 있습니다.
isalnum()
isalpha()
iscntrl()
isdigit()
isgraph()
islower()
isprint()
ispunct()
isspace()
isupper()
isxdigit()
tolower()
toupper()
is...()
기능
문자가 지정된 범주에 속하는지 여부를 확인합니다.
문법
int isalnum(char c);
int isalpha(char c);
int iscntrl(char c);
int isdigit(char c);
int isgraph(char c);
int islower(char c);
int isprint(char c);
int ispunct(char c);
int isspace(char c);
int isupper(char c);
int isxdigit(char c);
반환
지정된 문자가 범주에 속하는 경우 is... 함수는 0이 아닌 값을 반환하고 그렇지 않은 경우 0을 반환합니다.
문자 범주
isalnum letters (A to Z or a to z) or digits (0 to 9)
isalpha letters (A to Z or a to z)
iscntrl delete characters or ordinary control characters (0x7F or 0x00 to 0x1F)
isdigit digits (0 to 9)
isgraph printing characters (except space)
islower lowercase letters (a to z)
isprint printing characters (0x20 to 0x7E)
ispunct punctuation characters (iscntrl or isspace)
isspace space, tab, carriage return, new line, vertical tab, or formfeed (0x09 to 0x0D, 0x20)
isupper uppercase letters (A to Z)
isxdigit hex digits (0 to 9, A to F, a to f)
예
char c = 'A';
if (isxdigit(c))
printf("%c is hex\n", c);
else
printf("%c is not hex\n", c);
to...()
기능
문자를 대문자 또는 소문자로 변환합니다.
문법
char tolower(char c);
char toupper(char c);
반환
tolower 함수는 c가 대문자인 경우 변환된 문자를 반환합니다. 다른 모든 문자는 변경되지 않고 반환됩니다. toupper 함수는 c가 소문자인 경우 변환된 문자를 반환합니다. 다른 모든 문자는 변경되지 않고 반환됩니다.
파일 이름 처리 함수는 파일 이름, 크기 및 시간 스탬프를 사용하는 데 사용됩니다.
파일에 쓰는 방법에 대한 내용은 *output()*을 참고하십시오.
fileerror()
기능
입/출력 작업의 상태를 반환합니다.
문법
int fileerror();
반환
모든 것이 정상이면 fileerror 함수는 0을 반환합니다.
fileerror는 이 함수에 대한 마지막 호출 이후 수행된 모든 입/출력 작업의 상태를 확인하고 모든 것이 정상인 경우 0을 반환합니다. 입/출력 작업으로 인해 오류가 발생한 경우 0 이외의 값이 반환됩니다.
이전의 모든 오류 상태를 재설정하기 위한 입/출력 작업 전에 fileerror를 호출해야 하며, 이 작업이 성공했는지 확인하려면 입/출력 작업 후에 다시 호출해야 합니다.
fileerror가 0이 아닌 다른 값을 반환하는 경우(즉, 오류를 나타냄) 사용자에게 적절한 오류 메시지가 이미 지정되었습니다.
예
fileerror();
output("file.txt", "wt") {
printf("Test\n");
}
if (fileerror())
exit(1);
fileglob()
기능
디렉토리 검색을 수행합니다.
문법
int fileglob(string &array[], string pattern);
반환
fileglob 함수는 배열로 복사된 항목 수를 반환합니다.
fileglob은 pattern을 사용하여 디렉토리 검색을 수행합니다.
pattern은 '*' 및 '?'를 와일드카드 문자로 포함할 수 있습니다. pattern이 '/'로 끝나는 경우 지정된 디렉토리의 컨텐츠가 반환됩니다.
결과 배열에서 '/'로 끝나는 이름은 디렉토리 이름입니다.
배열은 알파벳순으로 정렬되며 디렉토리가 먼저 옵니다.
특수 항목 '.' 및 '..'(현재 및 상위 디렉토리의 경우)은 배열에 반환되지 않습니다.
pattern이 일치하지 않거나 지정된 디렉토리를 검색할 권한이 없는 경우 결과 배열은 비어 있게 됩니다.
Windows 사용자를 위한 참고 사항: 배열의 디렉토리 구분 기호는 항상 슬래시입니다. 이렇게 하면 사용자 언어 프로그램이 독립적으로 플랫폼에서 작동합니다. 패턴에서 백슬래시('\')도 디렉토리 구분 기호로 취급됩니다.
Windows에서 파일 이름을 정렬하는 작업은 대소문자를 구분하지 않습니다.
예
string a[];
int n = fileglob(a, "*.brd");
Filename 함수
기능
파일 이름을 별도의 부분으로 분할합니다.
문법
string filedir(string file);
string fileext(string file);
string filename(string file);
string filesetext(string file, string newext);
반환
filedir은 파일의 디렉토리(Windows의 드라이브 문자 포함)를 반환합니다.
fileext는 파일의 확장자를 반환합니다.
filename은 파일의 파일 이름(확장자 포함)을 반환합니다.
filesetext는 확장자가 newext로 설정된 파일을 반환합니다.
예
if (board) board(B) {
output(filesetext(B.name, ".out")) {
...
}
}
Filedata 함수
기능
파일의 시간 스탬프 및 크기를 가져옵니다.
문법
int filesize(string filename);
int filetime(string filename);
반환
filesize는 지정된 파일의 크기(바이트)를 반환합니다.
filetime은 지정된 파일의 시간 스탬프(초)를 반환합니다. 이 형식은 시간 함수와 함께 사용할 수 있습니다.
예
board(B)
printf("Board: %s\nSize: %d\nTime: %s\n",
B.name, filesize(B.name),
t2string(filetime(B.name)));
파일 입력 함수
파일 입력 함수는 파일에서 데이터를 읽는 데 사용됩니다. 다음 파일 입력을 사용할 수 있습니다.
파일에 쓰는 방법에 대한 내용은 output()을 참고하십시오.
fileread()
기능
파일에서 데이터를 읽습니다.
문법
int fileread(dest, string file);
반환
fileread는 파일에서 읽은 객체 수를 반환합니다.
반환 값의 실제 의미는 dest의 유형에 따라 달라집니다.
dest가 문자 배열인 경우 파일은 원시 이진 데이터로 읽히고 반환 값은 문자 배열로 읽은 바이트 수(파일 크기와 같음)를 반영합니다.
dest가 문자열 배열인 경우 파일은 문자 파일로 읽히고(배열 멤버당 한 행) 반환 값은 문자열 배열로 읽는 행 수입니다. 새 행 문자는 제거됩니다.
dest가 문자열인 경우 전체 파일은 해당 문자열로 읽히고 반환 값은 해당 문자열의 길이입니다(운영 체제가 "새 행" 문자 대신 "cr/lf"를 사용하여 문자 파일을 저장하는 경우 이 값은 파일 크기와 같지 않아도 됨).
예
char b[];
int nBytes = fileread(b, "data.bin");
string lines[];
int nLines = fileread(lines, "data.txt");
string text;
int nChars = fileread(text, "data.txt");
수학 함수는 수학 연산을 수행하는 데 사용됩니다. 다음과 같은 수학 함수를 사용할 수 있습니다.
abs()
acos()
asin()
atan()
ceil()
cos()
exp()
floor()
frac()
log()
log10()
max()
min()
pow()
round()
sin()
sqrt()
trunc()
tan()
오류 메시지
수학 함수 호출의 인수로 인해 오류가 발생하면 오류 메시지에 인수의 실제 값이 표시됩니다. 따라서 다음 문은 다음과 같습니다.
real x = -1.0;
real r = sqrt(2 * x);
해당 문은 다음 오류 메시지를 발생합니다.
Invalid argument in call to 'sqrt(-2)'
절대, 최대 및 최소 함수
기능
절대, 최대 및 최소 함수입니다.
문법
type abs(type x);
type max(type x, type y);
type min(type x, type y);
반환
abs는 x의 절대값을 반환합니다.
max는 x와 y의 최대값을 반환합니다.
min은 x와 y의 최소값을 반환합니다.
이러한 함수의 반환 유형은 인수의 (더 큰) 유형과 같습니다. type은 char, int 또는 real 중 하나여야 합니다.
예
real x = 2.567, y = 3.14;
printf("The maximum is %f\n", max(x, y));
반올림 함수
기능
반올림 함수입니다.
문법
real ceil(real x);
real floor(real x);
real frac(real x);
real round(real x);
real trunc(real x);
반환
ceil은 x보다 작지 않은 가장 작은 정수를 반환합니다.
floor는 x보다 크지 않은 가장 큰 정수를 반환합니다.
frac는 x의 분수 부분을 반환합니다.
round는 가장 가까운 정수로 반올림한 x를 반환합니다.
trunc는 x의 정수 부분을 반환합니다.
예
real x = 2.567;
printf("The rounded value of %f is %f\n", x, round(x));
삼각 함수
기능
삼각 함수입니다.
문법
real acos(real x);
real asin(real x);
real atan(real x);
real cos(real x);
real sin(real x);
real tan(real x);
반환
acos는 x의 아크코사인을 반환합니다.
asin은 x의 아크사인을 반환합니다.
atan은 x의 아크탄젠트를 반환합니다.
cos는 x의 코사인을 반환합니다.
sin은 x의 사인을 반환합니다.
tan은 x의 탄젠트를 반환합니다.
상수
PI는 "pi"(3.14...) 값입니다.
각도는 라디안으로 지정됩니다.
예
real x = PI / 2;
printf("The sine of %f is %f\n", x, sin(x));
지수 함수
기능
지수 함수입니다.
문법
real exp(real x);
real log(real x);
real log10(real x);
real pow(real x, real y);
real sqrt(real x);
반환
exp는 지수 e의 x 제곱을 반환합니다. log는 x의 자연 로그를 반환합니다. log10은 밑이 10인 x의 로그를 반환합니다. pow는 x 값의 y 제곱을 반환합니다. sqrt는 x의 제곱근을 반환합니다.
예
real x = 2.1;
printf("The square root of %f is %f\n", x, sqrt(x));
printf("The 3rd root of %f is %f\n", x, pow(x, 1.0/3));
기타 함수는 다양한 작업을 수행하는 데 사용됩니다.
다음과 같은 기타 함수를 사용할 수 있습니다.
구성 매개변수
기능
구성 매개변수를 저장하고 검색합니다.
문법
string cfgget(string name[, string default]);
void cfgset(string name, string value);
반환
cfgget은 지정된 이름으로 저장된 매개변수의 값을 반환합니다. 이러한 매개변수가 아직 저장되지 않은 경우 선택적 기본값이 반환됩니다(또는 기본값이 지정되지 않은 경우 빈 문자열이 반환됨). cfgget 함수는 이전에 cfgset()을 호출하여 저장한 값을 검색합니다.
cfgset 함수는 지정된 이름의 매개변수를 지정된 값으로 설정합니다.
이름에 유효한 문자는 'A'-'Z', 'a'-'z', '0'-'9', '.' 및 '_'입니다.
매개변수 이름은 대소문자를 구분합니다.
매개변수는 사용자의 eaglerc 파일에 저장됩니다. 동일한 매개변수 이름을 사용하는 경우 다른 사용자 언어 프로그램이 서로의 매개변수를 덮어쓰지 않도록 하려면 매개변수 이름의 맨 앞에 ULP의 이름을 입력하는 것이 좋습니다. 예를 들어, MyParam이라는 매개변수를 사용하는 mytool.ulp라는 ULP는 해당 매개변수를 이름 아래에 저장할 수 있습니다
mytool.MyParam
구성 매개변수는 EAGLE의 다른 모든 사용자 관련 매개변수도 포함하는 eaglerc 파일에 저장되기 때문에 cfgget() 및 *cfgset()*를 사용하여 EAGLE 매개변수에 액세스할 수도 있습니다. EAGLE 매개변수와 충돌하는 ULP 매개변수가 없도록 하려면 다음과 같이 EAGLE 매개변수 앞에 "EAGLE:"을 붙여야 합니다.
EAGLE:Option.XrefLabelFormat
모든 EAGLE의 내부 매개변수 및 이러한 매개변수가 eaglerc 파일에 저장되는 방법에 대한 설명서는 없습니다. 또한 이러한 매개변수를 변경할 때는 특히 주의하십시오. eaglerc 파일 자체와 마찬가지로, 수행 중인 작업을 알고 있는 경우에만 이러한 매개변수를 조작해야 합니다! 일부 EAGLE 매개변수는 변경 사항을 적용하려면 EAGLE을 다시 시작해야 할 수 있습니다. eaglerc 파일에 사용자 언어 매개변수가 "ULP:"라는 머리말과 함께 저장됩니다. 따라서 경우에 따라 다음과 같이 사용자 언어 매개변수 이름 앞에 이 머리말을 추가할 수 있습니다.
ULP:mytool.MyParam
예
string MyParam = cfgget("mytool.MyParam", "SomeDefault");
MyParam = "OtherValue";
cfgset("mytool.MyParam", MyParam);
country()
기능
사용 중인 시스템의 국가 코드를 반환합니다.
문법
string country();
반환
country는 현재 시스템에서 사용되는 국가를 식별하는 두 개의 대문자로 구성된 문자열을 반환합니다. 그러한 국가 설정을 결정할 수 없는 경우 기본 "US"가 반환됩니다.
예
dlgMessageBox("Your country code is: " + country());
exit()
기능
사용자 언어 프로그램에서 종료합니다.
문법
void exit(int result);
void exit(string command);
exit 함수는 사용자 언어 프로그램의 실행을 종료합니다.
정수 결과가 지정되면 이는 프로그램의 반환 값으로 사용됩니다. string 명령이 지정되면 해당 명령은 마치 RUN 명령 직후에 명령행에 입력된 것처럼 실행됩니다. 이 경우 ULP의 반환 값은 EXIT_SUCCESS로 설정됩니다.
상수
EXIT_SUCCESS return value for successful program execution (value 0)
EXIT_FAILURE return value for failed program execution (value -1)
fdlsignature()
기능
Premier Farnell의 Design Link에 대한 디지털 서명을 계산합니다.
문법
string fdlsignature(string s, string key);
fdlsignature 함수는 Premier Farnell의 Design Link 인터페이스에 액세스할 때 디지털 서명을 계산하는 데 사용됩니다.
language()
기능
사용 중인 시스템의 언어 코드를 반환합니다.
문법
string language();
반환
language는 현재 시스템에서 사용되는 언어를 식별하는 두 개의 소문자로 구성된 문자열을 반환합니다. 그러한 언어 설정을 결정할 수 없는 경우 기본 "en"이 반환됩니다.
language 함수를 사용하여 ULP에서 현재 시스템이 사용하는 언어에 따라 다른 메시지 문자열을 사용하도록 할 수 있습니다.
아래 예에서는 ULP에서 사용되는 모든 문자열이 문자열 배열 *I18N[]*에 나열되어 있으며, 이 ULP에서 지원하는 다양한 언어 코드가 포함된 문자열이 그 앞에 나옵니다. 각 문자열의 개별 부분을 구분하는 데 vtab 문자(lookup 함수에 중요함)를 사용하고, 쉼표를 사용하여 문자열을 구분합니다. 실제 작업은 지정된 문자열의 변환된 버전을 반환하는 tr() 함수에서 수행됩니다. I18N 배열에서 원래 문자열을 찾을 수 없거나 현재 언어에 대한 변환이 없는 경우 원래 문자열은 변환되지 않은 상태로 사용됩니다.
I18N 배열에 정의된 첫 번째 언어는 ULP 전체에서 사용되는 문자열이 기록되는 언어여야 하며, 대부분의 사용자가 프로그램에 액세스할 수 있도록 하려면 일반적으로 영어여야 합니다.
예
string I18N[] = {
"en\v"
"de\v"
"it\v"
,
"I18N Demo\v"
"Beispiel f?r Internationalisierung\v"
"Esempio per internazionalizzazione\v"
,
"Hello world!\v"
"Hallo Welt!\v"
"Ciao mondo!\v"
,
"+Ok\v"
"+Ok\v"
"+Approvazione\v"
,
"-Cancel\v"
"-Abbrechen\v"
"-Annullamento\v"
};
int Language = strstr(I18N[0], language()) / 3;
string tr(string s)
{
string t = lookup(I18N, s, Language, '\v');
return t ? t : s;
}
dlgDialog(tr("I18N Demo")) {
dlgHBoxLayout dlgSpacing(350);
dlgLabel(tr("Hello world!"));
dlgHBoxLayout {
dlgPushButton(tr("+Ok")) dlgAccept();
dlgPushButton(tr("-Cancel")) dlgReject();
}
};
lookup()
기능
문자열 배열에서 데이터를 조회합니다.
문법
string lookup(string array[], string key, int field_index[, char separator]);
string lookup(string array[], string key, string field_name[, char separator]);
반환
lookup은 field_index 또는 field_name으로 식별되는 필드의 값을 반환합니다. 필드가 없거나 문자열 일치 키가 없는 경우 빈 문자열이 반환됩니다.
*lookup()*과 함께 사용할 수 있는 배열은 문자 문자열로 구성되며, 각 문자열이 하나의 데이터 레코드를 나타냅니다.
각 데이터 레코드에는 문자 구분 기호로 구분되는 임의 수의 필드가 포함되어 있습니다(기본값은 탭 구분 기호인 '\t'). 레코드의 첫 번째 필드는 키로 사용되며 0으로 매겨집니다.
모든 레코드에는 고유한 키 필드가 있어야 하며 키 필드는 비워 두지 않아야 합니다. 그렇지 않으면 찾을 레코드가 정의되지 않습니다.
배열의 첫 번째 문자열에 "Header" 레코드(즉, 각 필드가 내용을 설명하는 레코드)가 포함된 경우 field_name 문자열이 있는 lookup을 사용하면 해당 필드의 색인이 자동으로 결정됩니다. 이렇게 하면 원하는 데이터가 포함된 필드 색인을 정확하게 파악하지 않고도 lookup 함수를 사용할 수 있습니다. 첫 번째 레코드에 실제로 헤더 정보가 포함되어 있는지 확인하는 것은 사용자의 책임입니다.
lookup() 호출의 키 매개변수가 빈 문자열인 경우 배열의 첫 번째 문자열이 사용됩니다. 그러면 프로그램에서 필수 필드 이름을 가진 헤더 레코드가 있는지 여부를 결정할 수 있습니다.
필드에 구분 기호 문자가 포함된 경우 해당 필드를 큰따옴표로 묶어야 합니다("abc;def"에서처럼 세미콜론(';')을 구분 기호로 사용한다고 가정). 필드에 큰따옴표(")가 포함된 경우에도 동일하게 적용됩니다. 이 경우 필드 내부의 큰따옴표를 이중으로 사용해야 합니다(abc;"def";ghi를 나타내는 "abc;""def"";ghi").
이러한 문제가 없는 기본 "탭" 구분 기호를 사용하는 것이 가장 좋습니다(필드에 탭 구분 기호를 포함할 수 없음).
다음은 데이터 파일 예입니다(가독성을 높이기 위해 구분 기호로 ';'을 사용함).
Name;Manufacturer;Code;Price
7400;Intel;I-01-234-97;$0.10
68HC12;Motorola;M68HC1201234;$3.50
예
string OrderCodes[];
if (fileread(OrderCodes, "ordercodes") > 0) {
if (lookup(OrderCodes, "", "Code", ';')) {
schematic(SCH) {
SCH.parts(P) {
string OrderCode;
// both following statements do exactly the same:
OrderCode = lookup(OrderCodes, P.device.name, "Code", ';');
OrderCode = lookup(OrderCodes, P.device.name, 2, ';');
}
}
}
else
dlgMessageBox("Missing 'Code' field in file 'ordercodes');
}
palette()
기능
색상 팔레트 정보를 반환합니다.
문법
int palette(int index[, int type]);
반환
palette 함수는 0xaarrggbb 양식의 정수 ARGB 값 또는 현재 사용되는 팔레트의 유형(색인 값에 따라 다름)을 반환합니다.
palette 함수는 지정된 색인(0에서 PALETTE_ENTRIES-1 사이의 범위)을 가진 색상의 ARGB 값을 반환합니다. type을 지정하지 않은 경우(또는 -1) 현재 편집기 창에 지정된 팔레트가 사용됩니다. 그렇지 않은 경우 type은 사용할 색상 팔레트(PALETTE_BLACK, PALETTE_WHITE 또는 PALETTE_COLORED)를 지정합니다. 색인의 특수 값 -1은 함수가 현재 편집기 창에서 사용 중인 팔레트의 type을 반환하도록 합니다.
index 또는 type이 범위를 벗어날 경우 오류 메시지가 지정되고 ULP가 종료됩니다.
상수
PALETTE_TYPES | 팔레트 유형 수(3) |
PALETTE_BLACK | 검은색 배경 팔레트(0) |
PALETTE_WHITE | 흰색 배경 팔레트(1) |
PALETTE_COLORED | 색상 배경 팔레트(2) |
PALETTE_ENTRIES | 팔레트당 색상 수(64) |
sleep()
기능
시간(초)을 절전합니다.
문법
void sleep(int seconds);
sleep 함수는 ULP 프로그램의 실행을 몇 초 동안 지연시킵니다.
sort()
기능
배열 또는 배열 세트를 정렬합니다.
문법
void sort(int number, array1[, array2,...]);
sort 함수는 지정된 array1을 직접 정렬하거나 array2로 시작하는 배열 세트를 정렬합니다. 이 경우 array1은 포인터 배열로 사용되는 int의 배열이어야 합니다.
어떤 경우든 number 인수는 배열의 항목 수를 정의합니다.
단일 배열 정렬
sort 함수가 단일 배열로 호출되면 다음 예와 같이 해당 배열이 직접 정렬됩니다.
string A[];
int n = 0;
A[n++] = "World";
A[n++] = "Hello";
A[n++] = "The truth is out there...";
sort(n, A);
for (int i = 0; i < n; ++i)
printf(A[i]);
배열 세트 정렬
sort 함수가 둘 이상의 배열에서 호출되면 첫 번째 배열은 int의 배열이어야 하지만 다른 모든 배열은 array 유형이 되고 정렬할 데이터를 보유할 수 있습니다. 다음 예는 첫 번째 배열을 포인터로 사용하는 방법을 보여 줍니다.
numeric string Nets[], Parts[], Instances[], Pins[];
int n = 0;
int index[];
schematic(S) {
S.nets(N) N.pinrefs(P) {
Nets[n] = N.name;
Parts[n] = P.part.name;
Instances[n] = P.instance.name;
Pins[n] = P.pin.name;
++n;
}
sort(n, index, Nets, Parts, Instances, Pins);
for (int i = 0; i < n; ++i)
printf("%-8s %-8s %-8s %-8s\n",
Nets[index[i]], Parts[index[i]],
Instances[index[i]], Pins[index[i]]);
}
이 이면의 목적은 하나의 네트에 여러 핀이 연결될 수 있는 것이며, 네트 리스트에서는 네트 이름을 정렬하고 하나의 네트 내에서는 부품 이름을 정렬하는 등의 방식을 원할 수 있습니다. 문자열 배열에서 키워드 numeric을 사용합니다. 그러면 문자열 끝의 숫자 부분을 고려하는 방식으로 문자열이 정렬되어 알파벳 순서 IC1, IC10, IC2,...IC9가 아니라 IC1, IC2,...IC9, IC10 등으로 표시됩니다.
배열 세트를 정렬할 때 첫 번째(색인) 배열은 int 유형이어야 하며 초기화할 필요가 없습니다. sort 함수를 호출하기 전에 인덱스 배열에 있을 수 있는 모든 컨텐츠는 결과 인덱스 값으로 덮어쓰기됩니다.
status()
기능
상태막대에 상태 메시지를 표시합니다.
문법
void status(string message);
status 함수는 ULP가 실행 중인 편집기 창의 상태막대에 지정된 메시지를 표시합니다.
system()
기능
외부 프로그램을 실행합니다.
문법
int system(string command);
반환
system 함수는 명령의 종료 상태를 반환합니다. 모든 것이 정상이면 일반적으로 0이고 오류가 발생하는 경우 0이 아닙니다.
system 함수는 명령 문자열로 지정된 외부 프로그램을 실행하고 프로그램이 종료될 때까지 기다립니다.
입/출력 리디렉션
외부 프로그램이 특정 파일에서 표준 입력을 읽거나 표준 출력을 쓰는 경우 입/출력을 리디렉션해야 합니다.
Linux 및 Mac OS X에서는 명령행에 '<' 또는 '>'를 추가하고 다음과 같이 원하는 파일 이름을 뒤에 추가합니다.
system("program < infile > outfile");
이 경우 프로그램이 실행되고 infile에서 읽고 outfile로 씁니다.
Windows에서 이 작업을 수행하려면 다음과 같이 명령 프로세서를 명시적으로 실행해야 합니다.
system("cmd.exe /c program < infile > outfile");
(DOS 기반 Windows 시스템에서는 cmd.exe 대신 command.com을 사용함)
백그라운드 실행
system 함수는 지정된 프로그램이 종료될 때까지 기다립니다. 이 함수는 몇 초 정도만 실행되거나 사용자의 주의를 완전히 사로잡는 프로그램에 유용합니다.
외부 프로그램이 더 오래 실행되는 경우 프로그램이 종료될 때까지 기다리지 않고 시스템 호출이 즉시 결과를 반환하게 하려면 다음과 같이 Linux 및 Mac OS X 아래의 명령 문자열에 '&'를 추가하면 됩니다.
system("program &");
Windows에서 이 작업을 수행하려면 다음과 같이 명령 프로세서를 명시적으로 실행해야 합니다.
system("cmd.exe /c start program");
(DOS 기반 Windows 시스템에서는 cmd.exe 대신 command.com을 사용함)
예
int result = system("simulate -f filename");
그러면 시뮬레이션 프로그램이 호출되어 ULP에서 방금 작성한 파일에 지정됩니다. 여기서 시뮬레이션은 EAGLE 패키지의 일부가 아니라 예에 불과합니다!
실제로 실행되는 시스템 명령을 제어하려는 경우 다음과 같이 명령을 실행하기 전에 확인을 요청하는 래퍼 함수를 작성할 수 있습니다.
int MySystem(string command)
{
if (dlgMessageBox("!Ok to execute the following command?<p><tt>" + command + "</tt>", "&Yes", "&No") == 0)
return system(command);
return -1;
}
int result = MySystem("simulate -f filename");
단위 변환
기능
내부 단위를 변환합니다.
문법
real u2inch(int n);
real u2mic(int n);
real u2mil(int n);
real u2mm(int n);
int inch2u(real n);
int mic2u(real n);
int mil2u(real n);
int mm2u(real n);
반환
u2inch는 n의 값을 인치 단위로 반환합니다.
u2mic는 n의 값을 미크론 단위(1/1,000mm)로 반환합니다.
u2mil은 n의 값을 마일 단위(1/1,000inch)로 반환합니다.
u2mm는 n의 값을 밀리미터 단위로 반환합니다.
inch2u는 n의 값을 내부 단위(인치)로 반환합니다.
mic2u는 n의 값을 내부 단위(미크론)로 반환합니다.
mil2u는 n의 값을 내부 단위(마일)로 반환합니다.
mm2u는 n의 값을 내부 단위(밀리미터)로 반환합니다.
EAGLE은 모든 좌표 및 크기 값을 1/320,000mm(0.003125µ)의 해상도를 가진 정수 값으로 저장합니다. 위의 단위 변환 함수를 사용하여 이러한 내부 단위를 원하는 측정 단위로 변환하거나 그 반대로 변환할 수 있습니다.
예
board(B) {
B.elements(E) {
printf("%s at (%f, %f)\n", E.name,
u2mm(E.x), u2mm(E.y));
}
}
네트워크 함수는 인터넷의 원격 사이트에 액세스하는 데 사용됩니다.
neterror()
기능
가장 최근 네트워크 함수 호출의 오류 메시지를 반환합니다.
문법
string neterror(void);
반환
neterror는 가장 최근 네트워크 함수 호출에서 발생한 오류를 설명하는 문자 메시지를 반환합니다.
오류가 발생하지 않은 경우 반환 값은 빈 문자열입니다.
neterror 함수는 다른 네트워크 함수가 음수 값을 반환한 후에 호출해야 하며, 음수 값은 오류가 발생했음을 나타냅니다. neterror의 반환 값은 사용자에게 표시될 수 있는 문자 문자열입니다.
SSL 연결(HTTPS)과 관련된 오류의 경우 netget의 메모도 고려하십시오.
예
string Result;
if (netget(Result, "http://web.cadsoft.de/cgi-bin/http-test?see=me&hear=them") >= 0) {
// process Result
}
else
dlgMessageBox(neterror());
netget()
기능
네트워크에서 GET 요청을 수행합니다.
문법
int netget(dest, string url[, int timeout]);
반환
netget은 네트워크에서 읽은 객체 수를 반환합니다. 반환 값의 실제 의미는 dest의 유형에 따라 달라집니다.
오류가 발생하는 경우 음수 값이 반환되고 neterror()가 호출되어 오류 메시지를 사용자에게 표시할 수 있습니다.
netget 함수는 지정된 URL을 네트워크로 보내고 결과를 dest 변수에 저장합니다. 시간 초과(초) 동안 네트워크 작업이 수행되지 않은 경우 연결이 종료됩니다. 기본 시간 초과는 20초입니다.
URL은 사용할 프로토콜(HTTP, HTTPS 또는 FTP)을 포함해야 하며, 다음과 같이 name=value 매개변수 쌍을 포함할 수 있습니다.
http://web.cadsoft.de/cgi-bin/http-test?see=me&hear=them
ftp://ftp.cadsoft.de/eagle/userfiles/README
원격 사이트에 접속하기 위해 사용자 ID와 암호가 필요한 경우 다음과 같이 지정할 수 있습니다.
https://userid:password@www.site.com/...
dest가 문자 배열이면 결과는 원시 이진 데이터로 처리되고 반환 값은 문자 배열에 저장된 바이트 수를 반영합니다.
dest가 문자열 배열인 경우 결과는 문자 데이터로 취급되고(배열 멤버당 하나의 선), 반환 값은 문자열 배열로 저장되는 행 수입니다. 새 행 문자는 제거됩니다.
dest가 문자열인 경우 결과가 해당 문자열에 저장되고 반환 값은 문자열의 길이입니다. 이진 데이터의 경우 값이 0x00인 바이트가 처음 나올 때 결과가 잘립니다.
프록시를 사용하여 HTTP 또는 HTTPS로 인터넷에 액세스해야 하는 경우 제어판의 "도움말/업데이트 확인" 아래에 있는 "구성" 대화상자에서 설정할 수 있습니다.
SSL 연결
SSL 연결의 경우(HTTPS당 요청) 인증서가 필요한데, 일부 시스템에서 인증서가 누락되거나 만료될 수 있습니다. 그러면 neterror()를 사용하여 쿼리할 수 있는 오류 메시지를 나타내며 연결이 실패합니다. 이 오류 메시지로 누락되거나 업데이트가 만료된 인증서를 설치하고 이 방식으로 연결하는 것이 가능해야 합니다. 이는 시스템에서 이 작업을 수행하는 방법에 따라 좌우됩니다(예: Windows에서 제어판/인터넷 옵션 등을 통해).
예
string Result;
if (netget(Result, "http://web.cadsoft.de/cgi-bin/http-test?see=me&hear=them") >= 0) {
// process Result
}
else
dlgMessageBox(neterror());
netpost()
기능
네트워크에서 POST 요청을 수행합니다.
문법
int netpost(dest, string url, string data[, int timeout[, string content_type] ]);
반환
netpost는 네트워크에서 읽은 객체 수를 반환합니다. 반환 값의 실제 의미는 dest의 유형에 따라 달라집니다. 오류가 발생하는 경우 음수 값이 반환되고 *neterror()*가 호출되어 오류 메시지를 사용자에게 표시할 수 있습니다.
netpost 함수는 지정된 데이터를 네트워크의 지정된 URL로 전송하고 그 결과를 dest 변수에 저장합니다.
시간 초과(초) 동안 네트워크 작업이 수행되지 않은 경우 연결이 종료됩니다. 기본 시간 초과는 20초입니다.
content_type이 지정되면 기본 컨텐츠 유형인 "text/html; charset=utf-8"을 덮어씁니다. URL에는 사용할 프로토콜(HTTP 또는 HTTPS)이 포함되어야 합니다.
원격 사이트에 접속하기 위해 사용자 ID와 암호가 필요한 경우 다음과 같이 지정할 수 있습니다.
https://userid:password@www.secret-site.com/...
dest가 문자 배열이면 결과는 원시 이진 데이터로 처리되고 반환 값은 문자 배열에 저장된 바이트 수를 반영합니다.
dest가 문자열 배열인 경우 결과는 문자 데이터로 취급되고(배열 멤버당 하나의 선), 반환 값은 문자열 배열로 저장되는 행 수입니다. 새 행 문자는 제거됩니다.
dest가 문자열인 경우 결과가 해당 문자열에 저장되고 반환 값은 문자열의 길이입니다. 이진 데이터의 경우 값이 0x00인 바이트가 처음 나올 때 결과가 잘립니다.
프록시를 사용하여 HTTP 또는 HTTPS로 인터넷에 액세스해야 하는 경우 제어판의 "도움말/업데이트 확인" 아래에 있는 "구성" 대화상자에서 설정할 수 있습니다.
SSL 연결(HTTPS)과 관련된 문제가 발생할 경우 netget의 메모를 고려하십시오.
예
string Data = "see=me\nhear=them";
string Result;
if (netpost(Result, "http://web.cadsoft.de/cgi-bin/http-test", Data) >= 0) {
// process Result
}
else
dlgMessageBox(neterror());
인쇄 함수는 형식이 지정된 문자열을 인쇄하는 데 사용됩니다.
printf()
기능
형식화된 출력을 파일에 씁니다.
문법
int printf(string format[, argument, ...]);
반환
printf 함수는 가장 최근 출력 문으로 연 파일에 기록된 문자 수를 반환합니다. 오류가 발생하는 경우 printf는 -1을 반환합니다.
문자열 형식
형식 문자열은 인수가 변환되고 형식이 지정 및 인쇄되는 방법을 조정합니다. 형식에 필요한 인수가 정확한 개수만큼 있어야 합니다. 형식에 대해 인수 개수 및 유형을 검사하고, 일치하지 않으면 오류 메시지가 표시됩니다. 형식 문자열에는 일반 문자와 형식 지정자의 두 가지 유형의 객체가 포함되어 있습니다.
형식 지정자
형식 지정자는 다음과 같은 양식입니다.
% [flags] [width] [.prec] type
각 형식 지정은 퍼센트 문자(%)로 시작합니다. % 이후에는 다음 항목이 순서대로 나옵니다.
an optional sequence of flag characters, [flags]
an optional width specifier, [width]
an optional precision specifier, [.prec]
the conversion type character, type
변환 유형 문자
d | 부호가 있는 십진 int |
o | 부호가 없는 8진 int |
u | 부호가 없는 십진 int |
x | 부호가 없는 16진 int(a, b,..) |
X | 부호가 없는 16진 int(A, B...) |
f | [-]dddd.ddd 양식의 부호가 있는 실수 값 |
e | [-]d.dddde[±]ddd 양식의 부호가 있는 실수 값 |
E | e와 동일하지만 지수에는 E를 사용함 |
g | 지정된 값과 정밀도를 기준으로 e 또는 f 양식의 부호가 있는 실수 값 |
G | g와 동일하지만 g 형식이 사용되는 경우 지수에는 G를 사용함 |
c | 단일 문자 |
s | 문자열 |
% | % 문자가 출력됨 |
플래그 문자
다음 플래그 문자는 다음과 같은 임의 순서 및 조합으로 나타날 수 있습니다.
"-" | 형식이 지정된 항목은 필드 내에서 왼쪽으로 자리맞추기됩니다. 일반적으로 항목은 오른쪽으로 자리맞추기됩니다. |
"+" | 부호가 있는 양수 항목은 항상 더하기 문자(+)로 시작합니다. 일반적으로 음수 항목만 기호로 시작합니다. |
" " | 부호가 있는 양수 항목은 항상 공백 문자로 시작합니다. "+"와 " "가 둘 다 지정된 경우 "+"는 " "을 재지정합니다. |
폭 지정자
폭 지정자는 출력 값의 최소 필드 폭을 설정합니다.
폭은 십진수 문자열을 통해 직접 지정되거나 별표(*)를 통해 간접적으로 지정됩니다. 폭 지정자에 별표를 사용하면 (이 형식 지정자를 사용하여) 형식이 지정된 항목 앞에 오는 인수(int여야 함)에 따라 최소 출력 필드 폭이 결정됩니다.
어떤 경우에도 폭이 존재하지 않거나 필드 폭이 작더라도 필드가 잘리지 않습니다. 변환 결과가 필드 폭보다 넓으면 변환 결과를 포함하도록 필드가 단순히 확장됩니다.
n | n자 이상의 문자가 출력됩니다. 출력 값이 n자 미만인 경우 출력은 공백으로 채워집니다("-" 플래그가 지정된 경우 오른쪽이 채워지고, 그렇지 않은 경우 왼쪽이 채워짐). |
0n | n자 이상의 문자가 출력됩니다. 출력 값의 문자 수가 n자 미만인 경우 왼쪽이 0으로 채워집니다. |
* | 인수 리스트는 형식이 지정되는 실제 인수 앞에 와야 하는 폭 식별자를 제공합니다. |
정밀도 지정자
정밀도 지정자는 항상 선행 폭 지정자와 구분하기 위해 마침표(.)로 시작합니다. 그런 다음, 폭과 마찬가지로 십진수 문자열을 통해 직접 또는 별표(*)를 통해 간접적으로 정밀도를 지정합니다. 정밀도 지정자에 별표를 사용하면 이 형식 지정자를 사용하여 형식이 지정된 항목 앞에 오는 인수(int여야 함)에 따라 정밀도가 결정됩니다.
없음 | 정밀도가 기본값으로 설정됩니다. |
.0 | int 유형의 경우 정밀도가 기본값으로 설정되고, real 유형의 경우 소수점이 출력되지 않습니다. |
.n | n자 또는 n개의 소수 자릿수가 출력됩니다. 출력 값에 n자 이상이 있으면 출력이 잘리거나 반올림될 수 있습니다(type 문자에 따라 다름). |
* | 인수 리스트는 형식이 지정되는 실제 인수 앞에 와야 하는 정밀도 식별자를 제공합니다. |
기본 정밀도 값
douxX | 1 |
eEf | 6 |
gG | 모든 유효 숫자 |
c | 효과 없음 |
s | 전체 문자열 출력 |
정밀도 지정(.n)이 변환에 미치는 영향
douxX | .n은 n자 이상의 문자가 인쇄되도록 지정합니다. 입력 인수의 숫자가 n자리보다 작으면 출력 값은 왼쪽이 0으로 채워집니다. 입력 인수의 숫자가 n자리보다 크면 출력 값이 잘리지 않습니다. |
eEf | .n은 n자가 소수점 뒤에 출력되고 마지막으로 출력되는 숫자가 반올림되도록 지정합니다. |
gG | .n은 최대 n개의 유효 숫자가 출력되도록 지정합니다. |
c | .n은 출력에 영향을 주지 않습니다. |
s | .n은 n자 이하가 출력되도록 지정합니다. |
이진 0 문자
sprintf와 달리 printf 함수는 이진 0 문자(0x00)를 출력할 수 있습니다.
char c = 0x00;
printf("%c", c);
예
int i = 42;
real r = 3.14;
char c = 'A';
string s = "Hello";
printf("Integer: %8d\n", i);
printf("Hex: %8X\n", i);
printf("Real: %8f\n", r);
printf("Char: %-8c\n", c);
printf("String: %-8s\n", s);
sprintf()
기능
형식화된 출력을 문자열에 씁니다.
문법
int sprintf(string result, string format[, argument, ...]);
반환
sprintef 함수는 결과 문자열에 기록된 문자 수를 반환합니다. 오류가 발생하는 경우 sprintef는 -1을 반환합니다.
문자열 형식
printf를 참고하십시오.
이진 0 문자
sprintef는 이진 0 문자(0x00)가 포함된 문자열을 반환할 수 없습니다. 결과 문자열에 이진 0 문자가 포함된 경우 해당 0 문자 다음의 모든 문자가 삭제됩니다. 이진 데이터를 출력해야 하는 경우 printf를 사용합니다.
예
string result;
int number = 42;
sprintf(result, "The number is %d", number);
문자열 함수는 문자열을 조작하는 데 사용됩니다.
사용 가능한 문자열 함수는 다음과 같습니다.
strchr()
strjoin()
strlen()
strlwr()
strrchr()
strrstr()
strsplit()
strstr()
strsub()
strtod()
strtol()
strupr()
strxstr()
strchr()
기능
지정된 문자가 처음 나오는 경우의 문자열을 검색합니다.
문법
int strchr(string s, char c[, int index]);
반환
strchr 함수는 문자열에 있는 해당 문자의 정수 오프셋을 반환하거나, 문자열에 해당 문자가 없으면 -1을 반환합니다.
index가 지정되면 해당 위치에서 검색이 시작됩니다. 음수 값은 문자열 끝부터 계산됩니다.
예
string s = "This is a string";
char c = 'a';
int pos = strchr(s, c);
if (pos >= 0)
printf("The character %c is at position %d\n", c, pos);
else
printf("The character was not found\n");
strjoin()
기능
문자열 배열을 결합하여 단일 문자열을 형성합니다.
문법
string strjoin(string array[], char separator);
반환
strjoin 함수는 배열의 결합된 항목을 반환합니다.
strjoin은 지정된 구분 기호로 구분된 배열의 모든 항목을 결합하고 결과 문자열을 반환합니다.
구분 기호가 새 행 문자('\n')이면 결과 문자열이 새 행 문자로 종료됩니다. 이는 N개 행(각각 새 행으로 종료됨)으로 구성되고, fileread() 함수를 사용하여 읽히고, 파일에서 읽은 원래 문자열에 결합할 N개 문자열의 배열로 분할되는 문자 파일을 유지하기 위해 수행됩니다.
예
string a[] = { "Field 1", "Field 2", "Field 3" };
string s = strjoin(a, ':');
strlen()
기능
문자열 길이를 계산합니다.
문법
int strlen(string s);
반환
strlen 함수는 문자열의 문자 수를 반환합니다.
예
string s = "This is a string";
int l = strlen(s);
printf("The string is %d characters long\n", l);
strlwr()
기능
문자열의 대문자를 소문자로 변환합니다.
문법
string strlwr(string s);
반환
strlwr 함수는 수정된 문자열을 반환합니다. 원래 문자열(매개변수로 지정됨)은 변경되지 않습니다.
예
string s = "This Is A String";
string r = strlwr(s);
printf("Prior to strlwr: %s - after strlwr: %s\n", s, r);
strrchr()
기능
지정된 문자가 마지막으로 나오는 경우의 문자열을 검색합니다.
문법
int strrchr(string s, char c[, int index]);
반환
strrchr 함수는 문자열에 있는 해당 문자의 정수 간격띄우기를 반환하거나, 문자열에 해당 문자가 없는 경우 -1을 반환합니다.
index가 지정되면 해당 위치에서 검색이 시작됩니다. 음수 값은 문자열 끝부터 계산됩니다.
예
string s = "This is a string";
char c = 'a';
int pos = strrchr(s, c);
if (pos >= 0)
printf("The character %c is at position %d\n", c, pos);
else
printf("The character was not found\n");
strrstr()
기능
지정된 하위 문자열이 마지막으로 나오는 경우의 문자열을 검색합니다.
문법
int strrstr(string s1, string s2[, int index]);
반환
strrstr 함수는 s1에서 s2의 첫 번째 문자에 대한 정수 간격띄우기를 반환하고, 문자열에서 해당 하위 문자열이 나타나지 않을 경우 -1을 반환합니다.
index가 지정되면 해당 위치에서 검색이 시작됩니다. 음수 값은 문자열 끝부터 계산됩니다.
예
string s1 = "This is a string", s2 = "is a";
int pos = strrstr(s1, s2);
if (pos >= 0)
printf("The substring starts at %d\n", pos);
else
printf("The substring was not found\n");
strsplit()
기능
문자열을 별도의 필드로 분할합니다.
문법
int strsplit(string &array[], string s, char separator);
반환
strsplit 함수는 배열로 복사된 항목 수를 반환합니다.
strsplit는 지정된 구분 기호에서 문자열을 분할하고 결과 필드를 배열에 저장합니다.
구분 기호가 새 행 문자('\n')인 경우 마지막 필드가 비어 있으면 자동으로 삭제됩니다. 이는 N개 행(각각 새 행으로 종료됨)으로 구성되고, fileread() 함수를 통해 읽어 N개 문자열의 배열로 분할할 문자 파일을 유지하기 위해 수행됩니다. 다른 구분 기호를 사용하면 문자열 끝의 빈 필드가 계산되므로 "a:b:c:"는 4개의 필드로 계산되며 마지막 필드는 비어 있습니다.
예
string a[];
int n = strsplit(a, "Field 1:Field 2:Field 3", ':');
strstr()
기능
지정된 하위 문자열이 처음으로 나오는 경우의 문자열을 검색합니다.
문법
int strstr(string s1, string s2[, int index]);
반환
strstr 함수는 s1에서 s2의 첫 번째 문자에 대한 정수 오프셋을 반환하고, 문자열에서 해당 하위 문자열이 나타나지 않을 경우 -1을 반환합니다.
index가 지정되면 해당 위치에서 검색이 시작됩니다. 음수 값은 문자열 끝부터 계산됩니다.
예
string s1 = "This is a string", s2 = "is a";
int pos = strstr(s1, s2);
if (pos >= 0)
printf("The substring starts at %d\n", pos);
else
printf("The substring was not found\n");
strsub()
기능
문자열에서 하위 문자열을 추출합니다.
문법
string strsub(string s, int start[, int length]);
반환
strsub 함수는 start 및 length 값으로 지정된 하위 문자열을 반환합니다. length의 값은 양수여야 하며, 그렇지 않으면 빈 문자열이 반환됩니다. length가 생략되면 문자열의 나머지(start에서 시작)가 반환됩니다.
start가 문자열 외부의 위치를 가리키는 경우 빈 문자열이 반환됩니다.
예
string s = "This is a string";
string t = strsub(s, 4, 7);
printf("The extracted substring is: %s\n", t);
strtod()
기능
문자열을 실수 값으로 변환합니다.
문법
real strtod(string s);
반환
strtod 함수는 지정된 문자열의 숫자 표현을 실수 값으로 반환합니다. 변환은 실수 상수 형식에 맞지 않는 첫 번째 문자에서 끝납니다. 문자열을 변환하는 동안 오류가 발생하면 0.0이 반환됩니다.
예
string s = "3.1415";
real r = strtod(s);
printf("The value is %f\n", r);
strtol()
기능
문자열을 정수 값으로 변환합니다.
문법
int strtol(string s);
반환
strtol 함수는 지정된 문자열의 숫자 표현을 int 값으로 반환합니다. 변환은 정수 상수 형식에 맞지 않는 첫 번째 문자에서 끝납니다. 문자열을 변환하는 동안 오류가 발생하면 0이 반환됩니다.
예
string s = "1234";
int i = strtol(s);
printf("The value is %d\n", i);
strupr()
기능
문자열의 소문자를 대문자로 변환합니다.
문법
string strupr(string s);
반환
strupr 함수는 수정된 문자열을 반환합니다. 원래 문자열(매개변수로 지정됨)은 변경되지 않습니다.
예
string s = "This Is A String";
string r = strupr(s);
printf("Prior to strupr: %s - after strupr: %s\n", s, r);
strxstr()
기능
지정된 정규식이 처음 나오는 경우의 문자열을 검색합니다.
문법
int strxstr(string s1, string s2[, int index[, int &length]]);
반환
strxstr 함수는 s2의 정규식과 일치하는 s1의 하위 문자열에 대한 정수 오프셋을 반환하고, 문자열에서 해당 정규식이 일치하지 않는 경우 -1을 반환합니다.
index가 지정되면 해당 위치에서 검색이 시작됩니다. 음수 값은 문자열 끝부터 계산됩니다.
length가 지정되면 일치하는 하위 문자열의 실제 길이가 해당 변수에 반환됩니다.
정규식을 사용하면 문자 문자열 내에서 패턴을 찾을 수 있습니다. 예를 들어, 정규식 "i.*a"
는 'i'로 시작하고 뒤에 임의의 문자('.')가 여러 번('*')만큼 나온 후 'a'로 끝납니다. "is this a" 또는 "ia"뿐만 아니라 "is a"도 일치 항목으로 검색합니다. 예를 들어, 정규식에 대한 자세한 내용은 Jeffrey E. F. Friedl의 Mastering Regular Expressions에서 찾을 수 있습니다.
예
string s1 = "This is a string", s2 = "i.*a";
int len = 0;
int pos = strxstr(s1, s2, 0, len);
if (pos >= 0)
printf("The substring starts at %d and is %d charcaters long\n", pos, len);
else
printf("The substring was not found\n");
URN 함수는 URN을 처리하는 데 사용됩니다.
urnbase()
기능
URN 문자열에서 기본 URN을 추출합니다.
문법
string urnbase(string urn);
반환
urnbase 함수는 제공된 URN의 기본 URN, 즉 후행 버전 또는 /가 없는 URN을 반환합니다. 예를 들어 "urn:adsk.eagle:footprint:123/4"의 기본 URN은 "urn:adsk.eagle:footprint:123"입니다. 버전이 없으면 입력 문자열이 반환됩니다.
예
string urn = "urn:adsk.eagle:footprint:123/4";
string base = urnbase(urn);
printf("The base URN is: %s\n", base);
urnversion()
기능
URN 문자열에서 버전을 추출합니다.
문법
int urnversion(string urn);
반환
urnversion 함수는 제공된 URN의 버전(예: / 다음에 나오는 숫자)을 반환합니다. 버전이 없으면 -1이 반환됩니다.
예
string urn = "urn:adsk.eagle:footprint:123/4";
int version = urnversion(urn);
printf("The URN version is: %d\n", version);
시간 함수는 시간 및 날짜 정보를 가져오고 처리하는 데 사용됩니다.
사용 가능한 시간 함수는 다음과 같습니다.
sleep()
t2day()
t2dayofweek()
t2hour()
t2minute()
t2month()
t2second()
t2string()
t2year()
time()
timems()
time()
기능
현재 시스템 시간을 가져옵니다.
문법
int time(void);
반환
시간 함수는 현재 시스템 시간을 시스템 종속 참조 날짜 이후에 경과된 시간(초)으로 반환합니다.
예
int CurrentTime = time();
timems()
기능
ULP가 시작된 이후의 시간(밀리초)을 가져옵니다.
문법
int timems(void);
반환
timems 함수는 ULP가 시작된 이후의 시간(밀리초)을 반환합니다. 86,400,000밀리초(즉, 24시간마다) 후에 값이 0에서 다시 시작됩니다.
예
int elapsed = timems();
시간 변환
기능
시간 값을 일, 월, 년 등으로 변환합니다.
문법
int t2day(int t);
int t2dayofweek(int t);
int t2hour(int t);
int t2minute(int t);
int t2month(int t);
int t2second(int t);
int t2year(int t);
string t2string(int t[, string format]);
반환
*t2day* returns the day of the month (1..31)
*t2dayofweek* returns the day of the week (0=sunday..6)
*t2hour* returns the hour (0..23)
*t2minute* returns the minute (0..59)
*t2month* returns the month (0..11)
*t2second* returns the second (0..59)
*t2year* returns the year (including century!)
*t2string* returns a formatted string containing date and time
선택적 형식 매개변수가 없는 t2string 함수는 지정된 시간 t를 로컬 시간의 국가별 문자열로 변환합니다.
형식 문자열을 사용하여 t2string을 호출하면 해당 형식을 사용하여 결과가 어떻게 나타나야 하는지 결정합니다.
형식 문자열에 다음 표현식을 사용할 수 있습니다.
d | 선행 0이 없는 일(1~31) |
dd | 선행 0이 있는 일(01~31) |
ddd | 현지화된 축약형 요일 이름(예: "Mon"~"Sun") |
dddd | 현지화된 긴 요일 이름(예: "Monday"~"Sunday") |
M | 선행 0이 없는 월(1~12) |
MM | 선행 0이 있는 월(01~12) |
MMM | 현지화된 축약형 월 이름(예: "Jan"~"Dec") |
MMMM | 현지화된 긴 월 이름(예: "January"~"December") |
yy | 두 자리 연도(00~99) |
yyyy | 네 자리 연도 |
h | 선행 0이 없는 시간(0 |
hh | 선행 0이 있는 시간(00 |
m | 선행 0이 없는 분(0~59) |
mm | 선행 0이 있는 분(00~59) |
s | 선행 0이 없는 초(0~59) |
ss | 선행 0이 있는 초(00~59) |
z | 선행 0이 없는 밀리초(지정된 시간에 1초 해상도만 있으므로 항상 0) |
zzz | 선행 0이 있는 밀리초(지정된 시간에 1초 해상도만 있으므로 항상 000) |
AP | AM/PM 표시 사용(AP가 "AM" 또는 "PM"으로 대체됨) |
ap | am/pm 표시 사용(ap가 "am" 또는 "pm"으로 대체됨) |
U | 지정된 시간을 UTC로 표시(첫 번째 문자여야 함, 기본값은 현지 시간임) |
다른 모든 문자는 "있는 그대로" 복사됩니다. 작은따옴표로 묶인 문자 시퀀스는 문자로 취급되며 표현식으로 사용되지 않습니다. 출력에서 연속된 두 개의 작은따옴표('')는 작은따옴표 하나로 대체됩니다.
예
int t = time();
printf("It is now %02d:%02d:%02d\n",
t2hour(t), t2minute(t), t2second(t));
printf("ISO time is %s\n", t2string(t, "Uyyyy-MM-dd hh:mm:ss"));
객체 함수는 객체에 대한 일반 정보에 액세스하는 데 사용됩니다.
사용 가능한 객체 함수는 다음과 같습니다.
clrgroup()
ingroup()
setgroup()
setvariant()
variant()
clrgroup()
기능
객체의 그룹 플래그를 지웁니다.
문법
void clrgroup(object);
clrgroup() 함수는 지정된 객체의 그룹 플래그를 지우므로 더 이상 이전에 정의된 그룹의 일부가 아닙니다.
UL_BOARD 또는 UL_NET 등의 다른 객체를 포함하는 객체에 적용할 경우 포함된 모든 객체의 그룹 플래그는 재귀적으로 지워지지만 *setgroup()*과 유사한 제한이 적용됩니다.
예
board(B) {
B.elements(E)
clrgroup(E);
}
ingroup()
기능
객체가 그룹에 있는지 여부를 확인합니다.
문법
int ingroup(object);
반환
ingroup 함수는 지정된 객체가 그룹에 있는 경우 0이 아닌 값을 반환합니다.
편집기에서 그룹이 정의된 경우 ingroup() 함수를 사용하여 특정 객체가 그룹의 일부인지 여부를 확인할 수 있습니다.
현재 도면에서 개별적으로 선택할 수 있는 단일 좌표를 가진 객체(예: UL_TEXT, UL_VIA, UL_CIRCLE 등)는 해당 좌표가 정의된 그룹 내에 있는 경우 *ingroup()*을 호출할 때 0이 아닌 값을 반환합니다.
UL_WIRE는 그룹에 해당 끝점이 전혀 없는지, 첫 번째 또는 두 번째 끝점만 있거나 두 끝점이 모두 있는지에 따라 0, 1, 2 또는 3을 반환합니다.
UL_RECTANGLE 및 UL_FRAME은 하나 이상의 구석이 그룹에 있는 경우 0이 아닌 값을 반환합니다. 값은 오른쪽 위 구석의 경우 비트 0, 왼쪽 위 구석의 경우 비트 1, 하단 왼쪽 구석의 경우 비트 2, 하단 오른쪽 구석의 경우 비트 3이 설정되어 있습니다.
좌표가 없는 상위 순위 객체(UL_NET, UL_SEGMENT, UL_SIGNAL, UL_POLYGON) 또는 실제로 도면 객체로 사용할 수 없는 상위 순위 객체(UL_SHEET, UL_DEVICESET, UL_SYMBOL, UL_FOOTPRINT)는 객체 중 하나 이상이 그룹 내에 있는 경우 0이 아닌 값을 반환합니다. 객체 계층에 대한 자세한 내용은 객체 유형을 참조하십시오.
UL_CONTACTREF 및 UL_PINREF는 자체 좌표가 없지만 각각 참조된 UL_CONTACT 또는 UL_PIN이 그룹 내에 있는 경우 0이 아닌 값을 반환합니다. UL_GRID, UL_VARIANT 또는 UL_TEXT 또는 UL_FRAME 객체의 와이어와 같이 선택할 수 없는 기타 객체의 경우 *ingroup()*의 동작이 정의되지 않으므로 사용해서는 안 됩니다.
상황에 맞는 메뉴 객체 식별
상황에 맞는 메뉴에서 ULP를 시작한 경우 그룹 메커니즘에서 선택한 객체에 액세스할 수 있습니다. 하나의 요소 그룹이 선택한 객체에서 만들어집니다. 따라서 *ingroup()*으로 식별할 수 있습니다. (참고: SET 및 RUN).
예
output("group.txt") {
board(B) {
B.elements(E) {
if (ingroup(E))
printf("Element %s is in the group\n", E.name);
}
}
}
setgroup()
기능
객체의 그룹 플래그를 설정합니다.
문법
void setgroup(object[, int flags]);
setgroup() 함수는 지정된 객체의 그룹 플래그를 설정하므로 그룹의 일부가 됩니다.
플래그가 지정되지 않은 경우 객체가 전체적으로 그룹에 추가됩니다(즉, 선택 점이 2개 이상 있는 경우 모든 선택 점 추가).
플래그에 0이 아닌 값이 있으면 객체의 지정된 점에 대한 그룹 플래그만 설정됩니다. UL_WIRE의 경우 '1'은 첫 번째 점의 그룹 플래그를 설정하고, '2'는 두 번째 점의 그룹 플래그를 설정하고, '3'은 두 점을 모두 설정함을 의미합니다. 이전에 설정된 모든 그룹 플래그는 *setgroup()*을 호출할 때 변경되지 않고 그대로 유지됩니다.
UL_BOARD 또는 UL_NET 등의 다른 객체를 포함하는 객체에 적용할 경우 포함된 모든 객체의 그룹 플래그는 다음과 같은 제한에 따라 재귀적으로 설정됩니다.
UL_LIBRARY 및 UL_SCHEMATIC의 경우는 아닙니다. 선택할 수 없거나 개별적으로 선택할 수 없는 하위 객체에는 플래그가 지정되지 않습니다(예: UL_GRID 또는 UL_VARIANT 객체 또는 UL_TEXT 또는 UL_FRAME 객체의 와이어).
객체 계층에 대한 자세한 내용은 객체 유형을 참조하십시오.
예
board(B) {
B.elements(E)
setgroup(E);
}
setvariant()
기능
현재 조립품 변형을 설정합니다.
문법
int setvariant(string name);
setvariant() 함수는 현재 조립품 변형을 이름으로 지정된 변형으로 설정합니다. 이 함수를 사용하여 모든 부품을 순환하고 지정된 변형에 정의된 그대로 해당 데이터를 "확인"할 수 있습니다.
name은 현재 도면에 포함된 유효한 조립품 변형을 참조해야 합니다.
이 함수는 지정된 조립품 변형이 있는 경우 0이 아닌 값을 반환하고 그렇지 않은 경우 0을 반환합니다.
setvariant() 호출에 의해 설정된 조립품 변형은 사용자 언어 프로그램이 결과를 반환할 때까지 활성 상태입니다. 그 후에는 도면의 변형이 ULP를 시작하기 전과 동일합니다.
보드에서 조립품 변형을 설정하는 것은 일관된 구조도가 로드된 경우에만 가능합니다.
예
if (setvariant("My variant")) {
// do something ...
else
// error: unknown variant
variant()
기능
현재 조립품 변형을 조회합니다.
문법
string variant(void);
variant() 함수는 현재 조립품 변형의 이름을 반환합니다. 변형이 현재 선택되지 않은 경우 빈 문자열('')이 반환됩니다.
예
string CurrentVariant = variant();
XML 함수는 XML(Extensible Markup Language) 데이터를 처리하는 데 사용됩니다. 사용 가능한 XML 함수는 다음과 같습니다.
xmlattribute()
xmlattributes()
xmlelement()
xmlelements()
xmltags()
xmltext()
xmlattribute(), xmlattributes()
기능
XML 태그의 속성을 추출합니다.
문법
string xmlattribute(string xml, string tag, string attribute);
int xmlattributes(string &array[], string xml, string tag);
xmlattribute 함수는 지정된 xml 코드 내의 지정된 태그에서 지정된 속성의 값을 반환합니다. 속성이 동일한 태그에 두 번 이상 나타나는 경우 마지막으로 나오는 속성 값을 가져옵니다.
xmlattributes 함수는 지정된 태그의 모든 속성 이름을 배열의 지정된 xml 코드 내에 저장하고, 발견된 속성 수를 반환합니다. 순서는 지정된 xml 코드와 반드시 같을 필요는 없습니다. 속성이 동일한 태그에 두 번 이상 나타나는 경우 해당 이름은 배열에 한 번만 나타납니다.
태그는 경로 형태로 지정됩니다.
지정된 xml 코드에 오류가 포함되어 있으면 XML 함수의 결과가 비어 있고 경고 대화상자가 사용자에게 표시되어 ULP 및 XML 코드에서 오류가 발생한 위치에 대한 정보를 제공합니다. XML 코드 내의 행 및 열 수는 xml 매개변수로 이 함수에 지정된 실제 문자열을 참조합니다.
예
// String XML contains the following data:
//<root>
// <body abc="def" xyz="123">
// ...
// </body>
//</root>
string s[];
int n = xmlattributes(s, XML, "root/body");
// Result: { "abc", "xyz" }
string s = xmlattribute(XML, "root/body", "xyz");
// Result: "123"
xmlelement(), xmlelements()
기능
XML 코드에서 요소를 추출합니다.
문법
string xmlelement(string xml, string tag);
int xmlelements(string &array[], string xml, string tag);
xmlelement 함수는 지정된 xml 코드 내에서 지정된 태그의 전체 XML 요소를 반환합니다. 결과에는 요소의 외부 XML 태그가 계속 포함되어 있으므로 다른 XML 함수를 사용하여 추가로 처리될 수 있습니다. 요소의 일반 문자 부분 내에 있는 공백은 그대로 유지됩니다. 그러나 요소 내에 있는 XML 태그의 전체 형식과 요소 속성의 순서는 원래 xml 코드와 다를 수 있습니다. xml 내에 태그가 두 개 이상 발생하는 경우 첫 번째 태그가 반환됩니다. 모든 발생을 가져오려는 경우 xmlelements를 사용합니다.
xmlelements 함수는 xmlelement처럼 작동하지만 지정된 태그가 있는 요소가 나오는 모든 경우를 반환합니다. 반환 값은 배열에 저장된 요소의 수입니다.
태그는 경로 형태로 지정됩니다.
지정된 xml 코드에 오류가 포함되어 있으면 XML 함수의 결과가 비어 있고 경고 대화상자가 사용자에게 표시되어 ULP 및 XML 코드에서 오류가 발생한 위치에 대한 정보를 제공합니다. XML 코드 내의 행 및 열 수는 xml 매개변수로 이 함수에 지정된 실제 문자열을 참조합니다.
예
// String XML contains the following data:
//<root>
// <body>
// <contents>
// <string>Some text 1</string>
// <any>anything 1</any>
// </contents>
// <contents>
// <string>Some text 2</string>
// <any>anything 2</any>
// </contents>
// <appendix>
// <string>Some text 3</string>
// </appendix>
// </body>
//</root>
//
string s = xmlelement(XML, "root/body/appendix");
// Result: " <appendix>\n <string>Some text 3</string>\n </appendix>\n"
string s[];
int n = xmlelements(s, XML, "root/body/contents");
// Result: { " <contents>\n <string>Some text 1</string>\n <any>anything 1</any>\n </contents>\n",
// " <contents>\n <string>Some text 2</string>\n <any>anything 2</any>\n </contents>\n"
// }
xmltags()
기능
XML 코드 내의 태그 이름 리스트를 추출합니다.
문법
int xmltags(string &array[], string xml, string tag);
xmltags 함수는 지정된 xml 코드 내에서 지정된 태그의 최상위 수준에 있는 모든 태그의 이름을 반환합니다. 반환 값은 배열에 저장된 태그 이름의 수입니다.
각 태그 이름은 XML 코드에 여러 번 나타나더라도 한 번만 반환됩니다.
태그는 경로 형태로 지정됩니다.
지정된 xml 코드에 오류가 포함되어 있으면 XML 함수의 결과가 비어 있고 경고 대화상자가 사용자에게 표시되어 ULP 및 XML 코드에서 오류가 발생한 위치에 대한 정보를 제공합니다. XML 코드 내의 행 및 열 수는 xml 매개변수로 이 함수에 지정된 실제 문자열을 참조합니다.
예
//String XML contains the following data:
//<root>
// <body>
// <contents>
// <string>Some text 1</string>
// <any>anything 1</any>
// </contents>
// <contents>
// <string>Some text 2</string>
// <any>anything 2</any>
// </contents>
// <appendix>
// <string>Some text 3</string>
// </appendix>
// </body>
//</root>
//
string s[];
int n = xmltags(s, XML, "root/body");
// Result: { "contents", "appendix" }
int n = xmltags(s, XML, "");
// Result: "root"
xmltext()
기능
XML 요소의 문자 데이터를 추출합니다.
문법
string xmltext(string xml, string tag);
xmltext 함수는 지정된 xml 코드 내의 지정된 태그에서 문자 데이터를 반환합니다.
문자 내의 모든 태그는 제거되며 공백(새 행 문자 포함)은 유지됩니다.
태그는 경로 형태로 지정됩니다.
지정된 xml 코드에 오류가 포함되어 있으면 XML 함수의 결과가 비어 있고 경고 대화상자가 사용자에게 표시되어 ULP 및 XML 코드에서 오류가 발생한 위치에 대한 정보를 제공합니다. XML 코드 내의 행 및 열 수는 xml 매개변수로 이 함수에 지정된 실제 문자열을 참조합니다.
예
// String XML contains the following data:
//<root>
// <body>
// Some <b>text</b>.
// </body>
//</root>
//
string s = xmltext(XML, "root/body");
// Result: "\n Some text.\n "
내장 문은 일반적으로 데이터 구조 또는 파일에 액세스할 수 있는 특정 컨텍스트를 여는 데 사용됩니다. 내장 문의 일반적인 문법은 다음과 같습니다.
name(parameters) statement
여기서 name은 내장 문의 이름이고, parameters는 하나 이상의 매개변수를 나타내며, statement는 내장 문에 의해 열린 컨텍스트 내에서 실행될 코드입니다.
statement는 다음과 같이 복합 문일 수 있습니다.
board(B) {
B.elements(E) printf("Element: %s\n", E.name);
B.Signals(S) printf("Signal: %s\n", S.name);
}
다음과 같은 내장 문을 사용할 수 있습니다.
기능
보드 컨텍스트를 엽니다.
문법
board(identifier) statement
board 문은 현재 편집기 창에 보드 도면이 포함되어 있는 경우 보드 컨텍스트를 엽니다. UL_BOARD 유형의 변수가 작성되고 식별자로 표시된 이름이 지정됩니다.
보드 컨텍스트가 성공적으로 열리고 보드 변수가 작성되면 문이 실행됩니다. 문 범위 내에서 보드 변수에 액세스하여 보드에서 추가 데이터를 검색할 수 있습니다.
현재 편집기 창에 보드 도면이 포함되어 있지 않으면 오류 메시지가 지정되고 ULP가 종료됩니다.
보드가 있는지 확인
인수 없이 board 문을 사용하면 현재 편집기 창에 보드 도면이 포함되어 있는지 확인할 수 있습니다. 이 경우 보드는 정수 상수처럼 동작하며 현재 편집기 창에 보드 도면이 있는 경우 1을 반환하고 그렇지 않은 경우 0을 반환합니다.
구조도에서 보드 액세스
현재 편집기 창에 구조도 도면이 포함되어 있는 경우 다음과 같이 머리말 project를 board 문 앞에 입력하여 해당 구조도 보드에 액세스할 수 있습니다
project.board(B) { ... }
그러면 현재 편집기 창에 보드가 있는지 또는 구조도 도면이 있는지에 관계없이 보드 컨텍스트가 열립니다. 그러나 해당 보드가 포함된 편집기 창이 데스크탑에 있어야 합니다.
예
if (board)
board(B) {
B.elements(E)
printf("Element: %s\n", E.name);
}
기능
장치 세트 컨텍스트를 엽니다.
문법
deviceset(identifier) statement
현재 편집기 창에 장치 도면이 포함된 경우 deviceset 문은 장치 세트 컨텍스트를 엽니다. UL_DEVICESET 유형의 변수가 작성되고 식별자로 표시된 이름이 지정됩니다.
장치 세트 컨텍스트가 성공적으로 열리고 장치 세트 변수가 작성되면 문이 실행됩니다. 문 범위 내에서 장치 세트 변수에 액세스하여 장치 세트에서 추가 데이터를 검색할 수 있습니다.
현재 편집기 창에 장치 도면이 포함되어 있지 않으면 오류 메시지가 지정되고 ULP가 종료됩니다.
장치 세트가 있는지 확인
인수 없이 deviceset 문을 사용하면 현재 편집기 창에 장치 도면이 포함되어 있는지 확인할 수 있습니다. 이 경우 deviceset는 정수 상수처럼 동작하며 현재 편집기 창에 장치 도면이 있는 경우 1을 반환하고 그렇지 않은 경우 0을 반환합니다.
예
if (deviceset)
deviceset(D) {
D.gates(G)
printf("Gate: %s\n", G.name);
}
기능
라이브러리 컨텍스트를 엽니다.
문법
library(identifier) statement
현재 편집기 창에 라이브러리 도면이 포함되어 있는 경우 library 문은 라이브러리 컨텍스트를 엽니다. UL_LIBRARY 유형의 변수가 작성되고 식별자로 표시된 이름이 지정됩니다.
라이브러리 컨텍스트가 성공적으로 열리고 라이브러리 변수가 작성되면 문이 실행됩니다. 문 범위 내에서 라이브러리 변수에 액세스하여 라이브러리에서 추가 데이터를 검색할 수 있습니다.
현재 편집기 창에 라이브러리 도면이 포함되어 있지 않으면 오류 메시지가 지정되고 ULP가 종료됩니다.
라이브러리가 있는지 확인
인수 없이 library 문을 사용하면 현재 편집기 창에 라이브러리 도면이 포함되어 있는지 확인할 수 있습니다. 이 경우 라이브러리는 정수 상수처럼 동작하며 현재 편집기 창에 라이브러리 도면이 있는 경우 1을 반환하고 그렇지 않은 경우 0을 반환합니다.
예
if (library)
library(L) {
L.devices(D)
printf("Device: %s\n", D.name);
}
기능
모듈 컨텍스트를 엽니다.
문법
module(identifier) statement
현재 편집기 창에 모듈 도면이 포함되어 있는 경우 module 문을 사용하면 모듈 컨텍스트가 열립니다. 현재 편집기 창에서 모듈 도면을 편집한 경우 module 문은 모듈 컨텍스트를 엽니다. UL_MODULE 유형의 변수가 작성되고 식별자로 표시된 이름이 지정됩니다.
모듈 컨텍스트가 성공적으로 열리고 모듈 변수가 작성되면 문이 실행됩니다. 문 범위 내에서 모듈 변수에 액세스하여 모듈에서 추가 데이터를 검색할 수 있습니다.
현재 편집기 창에 모듈 도면이 포함되어 있지 않으면 오류 메시지가 지정되고 ULP가 종료됩니다.# 편집기 창에서 현재, 모듈 도면을 편집하지 않은 경우 오류 메시지가 지정되고 ULP가 종료됩니다.
모듈이 있는지 확인
인수 없이 module 문을 사용하면 현재 편집기 창에 모듈 도면이 포함되어 있는지 확인할 수 있습니다. 이 경우 모듈은 정수 상수처럼 동작하며 현재 편집기 창에 모듈 도면이 있는 경우 1을 반환하고 그렇지 않은 경우 0을 반환합니다.
예
if (module)
module(M) {
printf("Module: %s\n", M.name);
}
기능
후속 printf() 호출을 위한 출력 파일을 엽니다.
문법
output(string filename[, string mode]) statement
output 문은 후속 printf() 호출을 통해 출력되도록 지정된 파일 이름과 모드를 사용하여 파일을 엽니다. 파일이 성공적으로 열리면 문이 실행되고 그 후에 파일이 닫힙니다.
파일을 열 수 없는 경우 오류 메시지가 지정되고 ULP 실행이 종료됩니다.
기본적으로 출력 파일은 프로젝트 디렉토리에 기록됩니다.
파일 모드
mode 매개변수는 출력 파일이 열리는 방법을 정의합니다. mode 매개변수가 지정되지 않은 경우 기본값은 "wt"입니다.
a append to an existing file, or create a new file if it does not exist
w create a new file (overwriting an existing file)
t open file in text mode
b open file in binary mode
D delete this file when ending the EAGLE session (only works together with w)
F force using this file name (normally *.brd, *.sch and *.lbr are rejected)
모드 문자는 임의 순서 및 조합으로 나타날 수 있습니다. 그러나 a와 w 또는 t와 b 중 각 마지막 문자만 중요합니다. 예를 들어 "abtw" 모드에서는 문자 쓰기를 위한 파일이 열리며 이 모드는 "wt"와 동일합니다.
내포된 출력 문
사용 가능한 파일 핸들이 충분하고 어떤 두 개의 활성 출력 문도 동일한 파일에 액세스하지 않는 경우 출력 문을 내포할 수 있습니다.
예
void PrintText(string s)
{
printf("This also goes into the file: %s\n", s);
}
output("file.txt", "wt") {
printf("Directly printed\n");
PrintText("via function call");
}
기능
외곽설정 컨텍스트를 엽니다.
문법
footprint(identifier) statement (new as of EAGLE 9.1)
현재 편집기 창에 패키지 도면이 포함되어 있는 경우 footprint 문은 패키지 컨텍스트를 엽니다. UL_FOOTPRINT 유형의 변수가 작성되고 식별자로 표시된 이름이 지정됩니다.
주: footprint 문은 EAGLE 9.1에 새로 추가되었습니다. 이전 EAGLE 버전과의 호환성을 위해 package를 별칭으로 사용할 수 있습니다.
외곽설정 컨텍스트가 성공적으로 열리고 외곽설정 변수가 작성되면 문이 실행됩니다. 문 범위 내에서 외곽설정 변수에 액세스하여 외곽설정에서 추가 데이터를 검색할 수 있습니다.
현재 편집기 창에 외곽설정 도면이 포함되어 있지 않으면 오류 메시지가 지정되고 ULP가 종료됩니다.
외곽설정이 있는지 확인
인수 없이 footprint 문을 사용하면 현재 편집기 창에 외곽설정 도면이 포함되어 있는지 확인할 수 있습니다. 이 경우 외곽설정은 정수 상수처럼 동작하며 현재 편집기 창에 외곽설정 도면이 있는 경우 1을 반환하고 그렇지 않은 경우 0을 반환합니다.
예
if (footprint)
footprint(F) {
F.contacts(C)
printf("Contact: %s\n", C.name);
}
기능
구조도 컨텍스트를 엽니다.
문법
schematic(identifier) statement
현재 편집기 창에 구조도 도면이 포함되어 있는 경우 schematic 문은 구조도 컨텍스트를 엽니다. UL_SCHEMATIC 유형의 변수가 작성되고 식별자로 표시된 이름이 지정됩니다.
구조도 컨텍스트가 성공적으로 열리고 구조도 변수가 작성되면 문이 실행됩니다. 문 범위 내에서 구조도 변수에 액세스하여 구조도에서 추가 데이터를 검색할 수 있습니다.
현재 편집기 창에 구조도 도면이 포함되어 있지 않으면 오류 메시지가 지정되고 ULP가 종료됩니다.
구조도가 있는지 확인
인수 없이 schematic 문을 사용하면 현재 편집기 창에 구조도 도면이 포함되어 있는지 확인할 수 있습니다. 이 경우 구조도는 정수 상수처럼 동작하며 현재 편집기 창에 구조도 도면이 있는 경우 1을 반환하고 그렇지 않은 경우 0을 반환합니다.
보드에서 구조도 액세스
현재 편집기 창에 보드 도면이 포함되어 있는 경우 다음과 같이 머리말 project를 schematic 문 앞에 입력하여 해당 보드 구조도에 액세스할 수 있습니다
project.schematic(S) { ... }
그러면 현재 편집기 창에 구조도 도면이 있는지 또는 보드 도면이 있는지에 관계없이 구조도 컨텍스트가 열립니다. 그러나 해당 구조도가 포함된 편집기 창이 데스크탑에 있어야 합니다!
현재 시트에 액세스
sheet 문을 사용하여 현재 로드된 시트에 직접 액세스할 수 있습니다.
현재 모듈에 액세스
module 문을 사용하여 현재 편집된 모듈에 직접 액세스할 수 있습니다.
예
if (schematic)
schematic(S) {
S.parts(P)
printf("Part: %s\n", P.name);
}
기능
시트 컨텍스트를 엽니다.
문법
sheet(identifier) statement
현재 편집기 창에 시트 도면이 포함되어 있는 경우 sheet 문은 시트 컨텍스트를 엽니다. UL_SHEET 유형의 변수가 작성되고 식별자로 표시된 이름이 지정됩니다.
시트 컨텍스트가 성공적으로 열리고 시트 변수가 작성되면 문이 실행됩니다. 문 범위 내에서 시트 변수에 액세스하여 시트에서 추가 데이터를 검색할 수 있습니다.
현재 편집기 창에 시트 도면이 포함되어 있지 않으면 오류 메시지가 지정되고 ULP가 종료됩니다.
시트가 있는지 확인
인수 없이 sheet 문을 사용하면 현재 편집기 창에 시트 도면이 포함되어 있는지 확인할 수 있습니다. 이 경우 시트는 정수 상수처럼 동작하며 현재 편집기 창에 시트 도면이 있는 경우 1을 반환하고 그렇지 않은 경우 0을 반환합니다.
예
if (sheet)
sheet(S) {
S.instances(I)
printf("Instance: %s\n", I.name);
}
기능
기호 컨텍스트를 엽니다.
문법
symbol(identifier) statement
현재 편집기 창에 기호 도면이 포함된 경우 symbol 문은 기호 컨텍스트를 엽니다. UL_SYMBOL 유형의 변수가 작성되고 식별자로 표시된 이름이 지정됩니다.
기호 컨텍스트가 성공적으로 열리고 기호 변수가 작성되면 문이 실행됩니다. 문 범위 내에서 기호 변수에 액세스하여 기호에서 추가 데이터를 검색할 수 있습니다.
현재 편집기 창에 기호 도면이 포함되어 있지 않으면 오류 메시지가 지정되고 ULP가 종료됩니다.
기호가 있는지 확인
인수 없이 symbol 문을 사용하면 현재 편집기 창에 기호 도면이 포함되어 있는지 확인할 수 있습니다. 이 경우 기호는 정수 상수처럼 동작하며 현재 편집기 창에 기호 도면이 있는 경우 1을 반환하고 그렇지 않은 경우 0을 반환합니다.
예
if (symbol)
symbol(S) {
S.pins(P)
printf("Pin: %s\n", P.name);
}