안드로이드 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