RS-232통신 루프백 테스트
아래와 같이 십자(+)드라이버를 2,3번핀 사이에 대고, 통신 데이터를 보내면, 동일한 데이터가 다시 올라옵니다.
더 쉽게 하려면, 루프백테스트용 콘넥터를 만들어 끼우는겁니다.
사진은 다음에...
더 쉽게 하려면, 루프백테스트용 콘넥터를 만들어 끼우는겁니다.
자바스크립트에서는 아래와 같이 배열 선언가능
var a=new Array();
function new_Array2(a,b)
{
var i,r=new Array(a);
for(i=0;i<b;i++)
{
r[i]=new Array(b);//각 요소마다 배열을 선언해주어야 한다.
}
return r;
}
※주의 : 배열 차원을 잘못 사용하면, 배열전체가 초기화됨(자바언어의 특징)
예) 2차원 배열 -> 1차원 배열로 사용할 경우
var a2=new_Array2(3,4);
a2[0][0]=2;
a2[0]=10;//a2를 다른형태로 사용하면, 배열전체가 바뀌어버림,
console.log("a2[0]=",a2[0]);//a2[0]= 10
console.log("a2[0][0]=",a2[0][0]);//undefined
※배열차원을 넘어서면, 에러.
예) 2차배열을 3차배열로 사용할 경우.
//a3[0][0][1][2]=3;//j.c:306 Uncaught TypeError: Cannot set property '2' of undefined
function test_new_Array2()
{
console.log("test_new_Array2()");
var a2=new_Array2(3,4);
//a2[0]=10;//a2를 다른형태로 사용(선언)하면, 바뀌어버림,
//console.log("a2[0]=",a2[0]);//a2[0]= 10
console.log("a2[0][0]=",a2[0][0]);//undefined
console.log("a2[0][1]=",a2[0][1]);//undefined
a2[0][0]=2;
console.log("-a2[0][0]=",a2[0][0]);//undefined ???? a2를 다른형태로 사용(선언)하면, 바뀌어버림,
a2[0][1]=3;
//a2[0][1][2]=3;//undefined
console.log("a2[0][1]=",a2[0][1]);//ok
//console.log("a2[0][1][2]=",a2[0][1][2]);//undefined
}
test_new_Array2();
자바스크립트 프로그래밍 장단점 (1) | 2017.03.04 |
---|---|
html vs canvas 장단점 (0) | 2017.03.04 |
자바스크립트 - 구조체 struct (0) | 2017.03.01 |
javascript - 이미지 좌표(위치) 구하기 (0) | 2017.02.18 |
HTML - CSS3 vs JavaScript (0) | 2016.06.18 |
인터넷에 있는 코드 몇개를 테스트했다.
임베디드를 하다보면, itoa를 직접 구현해야 할 경우가 가끔있다.
2번째가 라이브러리에 있는 함수
라이브러리에 포함된 함수가 가장 빨랐다.
테스트코드
void _debug_puts2(char *s,int a,int b);
void test_speed_itoa10_buf()
{
int v_start=-1000000,v_end=1000000,n=0,v;char buf[32];DWORD t[8];
_debug_puts("test_speed_itoa10_buf START\r\n");
t[0]=GetTickCount();
for(v=v_start;v<v_end;v++)
{
itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);//1
itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);//2
itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);//3
itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);//4
itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);//5
}
t[1]=GetTickCount();
for(v=v_start;v<v_end;v++)
{
itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);//1
itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);//2
itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);//3
itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);//4
itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);//5
}
t[2]=GetTickCount();
for(v=v_start;v<v_end;v++)
{
i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);//1
i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);//2
i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);//3
i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);//4
i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);//5
}
t[3]=GetTickCount();
for(v=v_start;v<v_end;v++)
{
itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);//1
itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);//2
itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);//3
itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);//4
itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);//5
}
t[4]=GetTickCount();
t[0]=t[1]-t[0];
t[1]=t[2]-t[1];
t[2]=t[3]-t[2];
t[3]=t[4]-t[3];
_debug_puts("test_speed_itoa10_buf END\r\n");
//[0] 6485
//[1] 5328
//[2] 8891
//[3] 7750
}
프로그램 코드 라이브러리 작성시 고려사항 (0) | 2016.09.01 |
---|---|
임베디드용 io 라이브러리 설계 계획-io라이브러리로 추상화 했을때의 장단점 (0) | 2016.09.01 |
error: conflicting declaration of 'long unsigned int xxx()' with 'C' linkage (0) | 2016.08.30 |
arm-none-eabi-gcc: error: CreateProcess: No such file or directory (0) | 2016.08.30 |
arm-none-eabi? (0) | 2016.08.30 |
tina 프로그램은 무료이며, 간단한 회로를 시뮬레이션 해볼 수 있는 좋은 전자회로 테스트 프로그램이다.
유료 사용프로그램은 많은 기능이 있지만, 이것은 무료이므로, 간단한 기능만 가능하다.
가끔 "irregular circuit" 에러가 떠서 당황하는 경우가 있다.
국내에는 사용자가 많지 않아 답을 찾기가 어렵다.
외국에서는 많이 사용한다.
구글신에게 물어보자.
아래의 비교적 간단한(?)회로를 테스트하는데, 에러가 발생했다.
원인은 간단했다. 교류성분만 통과할 수 있는 회로였기때문에 계산이 불가능했던것이다.
메뉴->Analysis->Transient->Zero init value(선택)하면 교류파형을 볼 수 있다.