1) MFC Server or Client에서 Android Client or Server로 한글 전달.

 - Window/MFC  : Unicode "UTF-16" Type, Byte Order(리틀엔디안)

 - Android/Java  : Unicode "UTF-16" Type, Byte Order(빅 엔디안)

    public  void ByteSwap(byte[]b, int nCnt) {
        byte Buf= 0;
        for(int i=0; i<nCnt; i+=2){
            Buf =b[i];
            b[i] =b[i+1];
            b[i+1] = Buf;
        }
    }
	String line;
	byte [] bDataByte =new byte[2048];
		
	int nCnt = input.read(bDataByte);
	ByteSwap(bDataByte, nCnt );//Byte Order가 다르다(앞뒤 변경) 그리고 UTF-16 Type으로)
 		
	String text = new String(bDataByte, "UTF-16");//, "UTF-8");//"EUC-KR");//"UTF-8");
	line = "("+ nCnt +")"+text;

 

* Intel x86, x64, AMD 리틀엔디안을 사용.
* Java는(JVM 에서 동작) 빅 엔디안 사용.

1) 초기 실행시 생성 Edit에 커서가 있어 KeyPad가 올라와 있는 상태를 피하기 위해.(Editer에 의한)

"Activity_main.xml"의  Layout 항목에 추가.

android:focusable="true"
android:focusableInTouchMode="true"

 

2) 화면 회전에 의한 Reset 방지 추가(세로 상태에서 가로로 변환될때 Reload 상태가 되에 S/W Reset된다.)

 -적당한 처리를 해주거나 회전 방지를 해준다.

android:configChanges="orientation|screenSize"

 

-변환에대한 처리를 해줄 경우. onConfigurationChanged()함수 재정의

'작업 > Android' 카테고리의 다른 글

PC(MFC:Unicode)에서 Android로 한글 전송  (0) 2019.10.31
Android SMS 전송 - 주의점!!!  (0) 2019.10.29
Android Socket 생성 - 주의점!!!  (0) 2019.10.28

안드로이드 SMS보내기.

   - 1번이 권한 부여가 없으면 프로그램이 이상종료한다. try-catch를 통해 Error원인을 찾고 조치가 필요하다.
   - 3번은 정보는 Internet에 많으니 참고.

 

1) 권한 부여 Permission 중요!( 참조 https://satisfactoryplace.tistory.com)
  static final int SMS_RECEIVE_PERMISSON=1;

  //권한이 부여되어 있는지 확인
  int permissonCheck= ContextCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS);
  if(permissonCheck == PackageManager.PERMISSION_GRANTED){
    Toast.makeText(getApplicationContext(), "SMS 수신권한 있음", Toast.LENGTH_SHORT).show();
  }else{
    Toast.makeText(getApplicationContext(), "SMS 수신권한 없음", Toast.LENGTH_SHORT).show();

  //권한설정 dialog에서 거부를 누르면
  //ActivityCompat.shouldShowRequestPermissionRationale 메소드의 반환값이 true가 된다.
  //단, 사용자가 "Don't ask again"을 체크한 경우
  //거부하더라도 false를 반환하여, 직접 사용자가 권한을 부여하지 않는 이상, 권한을 요청할 수 없게 된다.
  if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECEIVE_SMS)){
  //이곳에 권한이 왜 필요한지 설명하는 Toast나 dialog를 띄워준 후, 다시 권한을 요청한다.
    Toast.makeText(getApplicationContext(), "SMS권한이 필요합니다", Toast.LENGTH_SHORT).show();
    ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.RECEIVE_SMS},       SMS_RECEIVE_PERMISSON);
  }else{
    ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.RECEIVE_SMS}, SMS_RECEIVE_PERMISSON);
  }
}
    

2) 권한 부여 "AndroidMainifest.xml"

"<uses-permission android:name="android.permission.SEND_SMS" />"
"<uses-permission android:name="android.permission.RECEIVE_SMS" />"
"<uses-permission android:name="android.permission.READ_PHONE_STATE" />"


3) SMS 전송
String phoneNo = "010XXXXXXXX";
String sms = "폰에서 자동으로 보내는 메시지 입니다.";
try {
         SmsManager smsManager = SmsManager.getDefault();
         smsManager.sendTextMessage(phoneNo, null, sms, null, null);
         Toast.makeText(getApplicationContext(), "전송 완료!", Toast.LENGTH_LONG).show();
} catch (Exception e) {
         Toast.makeText(getApplicationContext(), "전송 오류!", Toast.LENGTH_LONG).show();
         Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();//오류 원인이 찍힌다.
         e.printStackTrace();
}

 

1) 권한 추가 "AndroidManifest.xml"

  "<uses-permission android:name="android.permission.INTERNET"/>"

 

2) Socket 생성은 Thread에서 생성한다. (onCreate()나 Main Process에서 만들면 Error발생.)

private Thread InitSocket = new Thread() {
    public void run() {
    try {
        socket = new Socket(ip, port); //<<========이런 식으로.
    } catch (IOException e1) {
        e1.printStackTrace();
    }
};

 OnCreate()에서 CreateSocket.start();

 

 

 

*추가 : Host Name으로 접속 시도

Socket socket = new Socket();

InetSocketAddress address = new InetSocketAddress("SW_CCH", 8500);

socket.connect(address);

 

Bending 궤적 그리기

 

- 정밀 Bending을 수행할 때 모션 궤적을 계산한다. 

- 목표 R값, 파지점 거리, 구동원점과 흡착 점 거리 입력

- X, Z, R 값의 변화량을 원하는 구동Step(각도)로 각 위치 값 계산.

- 100에서 1400개 사이의 분해능으로 계산(기본 700Point)

- 3축 List Motion기능 가능 모선 Controller에 적용.

 

궤적 그리기 실기 적용

 

'작업 > 설비' 카테고리의 다른 글

파나소닉 A6 모터 설정(리니어, 볼스크류)  (1) 2020.08.12
인쇄기 Align동작 영상  (0) 2020.07.17
Dxf File 가공라인 전환  (0) 2020.04.01
UVW Stage 공식 #2  (0) 2019.10.25
UVW Stage 공식 #1  (0) 2019.10.25

 

 

'일상' 카테고리의 다른 글

RC Car FPV 화면  (0) 2021.01.06
그림  (0) 2019.10.25

공식 유도
구현을 위한 정리
공식 구현
역환산 예(구조에 따라 수치및 부호 변경)

출처 : 에스티원 Daum Blog 자료 참고

 

 

- 정사각형 형태 UVW Stage 계산 유리.

- 역 환산 용이함.

'작업 > 설비' 카테고리의 다른 글

파나소닉 A6 모터 설정(리니어, 볼스크류)  (1) 2020.08.12
인쇄기 Align동작 영상  (0) 2020.07.17
Dxf File 가공라인 전환  (0) 2020.04.01
Bending 궤적 Simulation  (0) 2019.10.25
UVW Stage 공식 #1  (0) 2019.10.25

 

기본 유도 공식 1
기본 유도 공식 2
공식 구현

 

 

출처 : WWW.LINEARWORLD.COM 자료 참고

 

 

- 정사각형, 직사각형 UVW Sate에 적용 가능.

- Stage위의 임의의 위치 A에서 B로 X, Y 및 T값의 변화량 만으로 이송 가능.

'작업 > 설비' 카테고리의 다른 글

파나소닉 A6 모터 설정(리니어, 볼스크류)  (1) 2020.08.12
인쇄기 Align동작 영상  (0) 2020.07.17
Dxf File 가공라인 전환  (0) 2020.04.01
Bending 궤적 Simulation  (0) 2019.10.25
UVW Stage 공식 #2  (0) 2019.10.25

+ Recent posts