Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
#include <18F4550.h>
#FUSES HSPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL3,USBDIV,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000) //Microcontroller Clock Frequency 48MHz
#define USB_CON_SENSE_PIN PIN_C2
#include <usb_cdc.h>
void main()
{
//Variables
int8 BobinaA, BobinaB, BobinaC, BobinaD;
short Girar_D, Girar_I;
OUTPUT_A(0); // Inicializacion de los puertos
OUTPUT_B(0);
OUTPUT_C(0);
OUTPUT_D(0);
OUTPUT_E(0);
// Secuencia de Giro del Motor.
BobinaA=0b00000011;
BobinaB=0b00000110;
BobinaC=0b00001100;
BobinaD=0b00001001;
usb_init_cs();
while(true)
{
usb_task();
if (usb_attached())
{
output_low(PIN_C0); // (Apaga LED Rojo)
output_high(PIN_C1); // (Enciende LED Verde)
}
else
{
output_high(PIN_C0); //(Enciende LED Rojo)
output_low(PIN_C1); //(Apaga LED Verde)
}
if(usb_cdc_connected())
{
if (usb_enumerated())
{
if(usb_cdc_kbhit())
{
if(usb_cdc_getc()=='d')
{
printf(usb_cdc_putc,"Dale Derecha");
Girar_D=true;
Girar_I=false;
}
if(usb_cdc_getc()=='i')
{
printf(usb_cdc_putc,"Dale Izquierda");
Girar_I=true;
Girar_D=false;
}
if(usb_cdc_getc()=='s')
{
printf(usb_cdc_putc,"No Girar");
Girar_I=false;
Girar_D=false;
output_d(0); //Desenergiza las bobinas
}
}
}
}
if (Girar_D) //Bandera Girar Derecha
{
output_d(BobinaA);
delay_ms(80);
output_d(BobinaB);
delay_ms(80);
output_d(BobinaC);
delay_ms(80);
output_d(BobinaD);
delay_ms(80);
}
if (Girar_I) //Bandera Girar Derecha
{
output_d(BobinaD);
delay_ms(80);
output_d(BobinaC);
delay_ms(80);
output_d(BobinaB);
delay_ms(80);
output_d(BobinaA);
delay_ms(80);
}
} //fin while
} //fin!
Option Explicit
Private Sub Form_Load()
puerto.AddItem "COM1"
puerto.AddItem "COM2"
puerto.AddItem "COM3"
puerto.AddItem "COM4"
puerto.AddItem "COM5"
puerto.AddItem "COM6"
puerto.ListIndex = 0
MSComm1.Settings = "9600,N,8,1"
MSComm1.OutBufferSize = 1
MSComm1.InBufferSize = 14
MSComm1.InputMode = comInputModeText
MSComm1.InputLen = 14
MSComm1.RThreshold = 8
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
Private Sub MSComm1_OnComm()
Dim InBuff As String
Select Case MSComm1.CommEvent
Case comEvReceive
Debug.Print MSComm1.InBufferSize
InBuff = MSComm1.Input
MSComm1.InBufferCount = 0 'Vacia el buffer de recepción
Debug.Print MSComm1.InBufferSize
Debug.Print InBuff
Recibir.Text = ""
Recibir.Text = Left$(InBuff, 14)
End Select
End Sub
Private Sub Timer1_Timer()
DoEvents 'Para que windows y el programa pueda realizar otras cosas
If MSComm1.PortOpen = True Then
estado.BackColor = &HFF00& 'Verde
Debug.Print "Conectado"
Label3.Caption = "USB ON"
MSComm1.PortOpen = False 'Se cierra el puerto y se abre
MSComm1.PortOpen = True 'si permite abrirlo es porque el puerto existe
'y esta conectado, sino, genera un error
Exit Sub
Else
estado.BackColor = &HFF& 'rojo
Debug.Print "Desconectado"
Label3.Caption = "USB OFF"
End If
End Sub
Private Sub conectar_Click()
If MSComm1.PortOpen = False Then
'determina el puerto que hemos seleccionado.
If puerto.ListIndex = 0 Then
MSComm1.CommPort = 1
End If
If puerto.ListIndex = 1 Then
MSComm1.CommPort = 2
End If
If puerto.ListIndex = 2 Then
MSComm1.CommPort = 3
End If
If puerto.ListIndex = 3 Then
MSComm1.CommPort = 4
End If
If puerto.ListIndex = 4 Then
MSComm1.CommPort = 5
End If
If puerto.ListIndex = 5 Then
MSComm1.CommPort = 6
End If
End If
MSComm1.PortOpen = True
End Sub
Private Sub Detener_Click()
Timer1.Enabled = False
If MSComm1.PortOpen = True Then
MSComm1.Output = "s"
MSComm1.OutBufferCount = 0 'Vacia el buffer de transmisión
Debug.Print "MSComm1.OutBufferCount"; MSComm1.OutBufferCount
End If
Timer1.Enabled = True
End Sub
Private Sub Girar1_Click()
Timer1.Enabled = False
If MSComm1.PortOpen = True Then
MSComm1.Output = "d"
MSComm1.OutBufferCount = 0 'Vacia el buffer de transmisión
Debug.Print "MSComm1.OutBufferCount"; MSComm1.OutBufferCount
End If
Timer1.Enabled = True
End Sub
Private Sub Girar2_Click()
Timer1.Enabled = False
If MSComm1.PortOpen = True Then
MSComm1.Output = "i"
MSComm1.OutBufferCount = 0 'Vacia el buffer de transmisión
Debug.Print "MSComm1.OutBufferCount"; MSComm1.OutBufferCount
End If
Timer1.Enabled = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End Sub
...
...
////////////////// END USB CONTROL HANDLING //////////////////////////////////
////////////////// BEGIN USB<->RS232 CDC LIBRARY /////////////////////////////
char usb_cdc_getc(void) {
char c;
while (!usb_cdc_kbhit()) {}
c=usb_cdc_get_buffer_status_buffer[usb_cdc_get_buffer_status.index++];
if (usb_cdc_get_buffer_status.index >= usb_cdc_get_buffer_status.len) {
usb_cdc_get_buffer_status.got=FALSE;
usb_flush_out(USB_CDC_DATA_OUT_ENDPOINT, USB_DTS_TOGGLE);
}
return(c);
}
...
...
Este problema yo lo tuve , ... la verdad nunca lo solucioné pero déjame que vea como puedo ayudarte.
...se me solucionó cuando empecé con HID...