2009년 7월 27일 월요일

2009년 7월 21일 화요일

You Are Really Rich, You Just Don’t Know It Yet

사랑해가 3억원의 가치가 있단다. 단, 안정적인 상황이 계속될 때라고 하지만.
마이클잭슨과 장미희는 3억원을 계속 보내고 있었던 거야...

2009년 7월 5일 일요일

[USB4000] USB STALL

USB transfer는 isochronous transfer를 빼고는 호스트든 디바이스든 데이터를 받는 쪽이 상대방이 보낸 데이터를 잘 받았는지 못 받았는지를 확인 handshake(악수) packet을 날림.

호스트가 디바이스에게 이상한 전문을 날리면 디바이스는 핸드쉐이크 패킷에 stall이라고 써서 먹이는 거지. 그럼 디바이스가 호스트가 stall을 날리면 호스트는 해당 엔드포인트로 데이터전송을 중단.
Default Control Endpoint ( Endpoint 0 )와 다른 Endpoint에서의 경우가 달러.
일단 Endpoint 0의 경우 : 전송을 새로 함. --> 실패한다면 호스트는 USB 버스 리셋.
디바이스가 bus reset을 받으면 tall을 일으켰던 원인을 제거하기 위해 초기화.
Bulk, Interrupt, Control( “Default Control”이 아님) 같은 다른 타입의 엔드포인트가 스톨에 걸린 경우엔 호스트는 Clear Feature/Stall Request를 디바이스에게 보냄.
그럼 디바이스는 Stall 상태에서 헤어나기 위해 뭔가를 해야 함.

-----------------
PC 노이즈 유입

USB는 PC에서 5볼트 전원을 끌어 쓰므로 그리로 PC 내부 노이즈가 들어옵니다. 모든 USB 제품 공통 문제이나 해결책 있습니다. 따로 전원을 쓰는 USB 허브를 거치면 됩니다. 전원부에 접지 처리가 제대로 되어 있는 넘인지 확인해야겠지요.

-----------------

USB 규격 자체를 놓고 보자면 USB 규격상 케이블길이는 최대 5M 를 넘지 않아야 하며, 5M 를 넘어설 경우 신호의 세기가 약해지기 때문에, 데이터전송시 오류가 발생하게 된다.

5M 가 넘는곳으로 연결을 해야할경우에는 리피터를 추가해줘야 한다.


그럼 왜 이제품이 최대 25M 인가 라는 의문점이 생기겠지만, 이유는 간단하다.

USB 규격에는 5v 500mA 의 전원이 출력되도록 되어 있다. 이는 USB 메모리, USB 멀리리더기, USB HUB 등의 제품에 전원을 공급해주기 위함이다.


말이 나온김에 USB 허브에는 무전원 과 유전원 두가지가 있다.

어느걸 쓰던지 그것은 사용자의 마음이지만, 무전원의 경우 PC 의 USB 포트에서 공급되는 전원이 500mA 이기때문에 4Port 가 대부분인데, 이것은 HUB 에서 100mA , 4 Port  * 100mA = 400 mA  해서 합이 500mA 이다.


USB 메모리,리더기 등은 별도의 전원을 연결하지 않더라도 500mA의 전원이면 충분하지만, 만약 USB 장치가 100mA 를 초과하는 전력을 요구한다면, PC 에 직접 연결해서 500mA 를전부 공급받거나,  유전원 USB HUB 에 연결해야만 한다.

 - 500mA 마저도 초과할경우에는 전원공급목적에 한해서 USB 를 병렬로 연결하여 1000mA 를 공급받는것도 가능하다. -


이야기가 엉뚱한곳으로 흘러갔는데 , 다시 본론으로 돌아오자.


KW-220C 이제품이 5개까지 연결하여 25M를 지원하는 이유에 대해서는 눈치가 있는사람이라면 이미 이해를 했을것이지만, 그렇지 못한 사람을 위해서 설명하겠다.

이 리피터는 단순히 USB 신호의 증폭만을 위하기 때문에 소비하는 전력도 100mA 이다.

즉 하나만 연결하면 작동 전류만 소비하고, 나머지 400mA 를 공급한다. 여기에 리피터를 하나더 확장한다면, 다시 400 mA 에서 100mA 만 소비하고 300mA 를 또다시 흘려보낼것이다.

이렇게 해서 5개가 연결이 가능하고 , 6개째부터는 전력부족으로 인식을 하지 못한다.


여기까지 왔으니 하나더 말하자면, 리피터는 리피터 일뿐 , 전원공급장치가 되어선 안된다.

리피터를 사용하자면 유전원 USB 허브를 병행해서 사용해야 할것이다.

-------------------------

I have used USB4000 spectrometer with LabVIEW 8.6.
However i have avoided the use of the DLL`s provided by ocean optics . They are very unstable , hence I have used the COM objectsdireclty in LabVIEW ; which seem to be much more stable than DLL`s provided by ocean optics.

2009년 7월 3일 금요일

[C#]Splitting on multiple whitespaces

Here we see how you can extract all substrings in your string that are separated by whitespace characters. You could also use string Split, but this version is simpler and can also be extended more easily. The example gets all operands and operators from an equation string.

=== Program that tokenizes (C#) ===

using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
//
// The equation.
//
string operation = "3 * 5 = 15";
//
// Split it on whitespace sequences.
//
string[] operands = Regex.Split(operation, @"\s+");
//
// Now we have each token.
//
foreach (string operand in operands)
{
Console.WriteLine(operand);
}
}
}

=== Output of the program ===

3
*
5
=
15Notes on tokenizers. Computer programs and languages first undergo lexical analysis and tokenization, which gets all the 'tokens' such as those shown in the output above. This is an effective way to parse computer languages or program output.